2012-08-09 23 views
5

Editar: He cambiado el estilo del archivo json para hacerlo más simple ya que no pude trabajar con la versión anterior. Necesito ser capaz de crear una matriz de objetivos en Java donde cada elemento de la matriz tiene su nombre como el valor de Target_Name. También necesito poder combinar nombres de destino repetidos que tengan diferentes nombres de objeto. Así que, básicamente, quiero una matriz objetivo y dentro de cada elemento quiero tener una matriz de objetos que contengan Tipo, Número Pin y capacidades.Necesita ayuda para analizar el archivo json usando gson

Sé que debo crear una clase de lista de destino y dentro de esas variables para el nombre del objetivo y todo lo demás. He intentado algo así antes, pero tuve problemas para descubrir cómo funcionaría.

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

una cálida bienvenida a mi amigo stackoverflow @CodeDroid. ¿Tal vez guardar eso para los no principiantes? El archivo –

Respuesta

2

Es bastante sencillo, siguiente es un código cómo cargar y leer nodos. Le ayudará a averiguar cómo consultar sus datos.

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

// el análisis de JSON se va a parecer después de

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

// Ejemplos de cómo leer los valores y consultar objetos

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

no es un recurso sin formato. Tengo una conexión http a google cloud y tengo una url para el archivo json. El problema es analizar este archivo y guardar esas variables para usarlo más adelante. Sin embargo, intentaré implementar las otras cosas que has mencionado. – zms6445

+0

@ user1586194 no importa cuál es la fuente del archivo json, simplemente léalo desde cualquier lugar al Reader o simplemente String y dele al método JsonParser.parse(). – Maxim

+0

¿JsonParser y JsonObject no forman parte de la clase json incluida en android sdk? ¿Gson tiene un equivalente? – zms6445

Cuestiones relacionadas