2010-12-10 15 views
31

Tengo un problema al intentar analizar con un valor mínimo para asignar en Android.Parse objeto JSON con cadena y valor solamente

Hay algún formato JSON muestra con más información por ejemplo:

[{id:"1", name:"sql"},{id:"2",name:"android"},{id:"3",name:"mvc"}] 

Este que el ejemplo más común de usar y fácil de usar sólo tiene que utilizar getString("id") o getValue("name").

Pero, ¿cómo puedo analizar el mapa utilizando este formato JSON con solo cadena y valor de formato mínimo para la colección de mapas java mediante bucle? Y porque la cadena json siempre será diferente una de otra. por ejemplo:

{"1":"sql", "2":"android", "3":"mvc"} 

Gracias

Respuesta

76

Que necesita para obtener una lista de todas las claves, un bucle sobre ellos y añadirlos a su mapa como se muestra en el siguiente ejemplo:

String s = "{menu:{\"1\":\"sql\", \"2\":\"android\", \"3\":\"mvc\"}}"; 
    JSONObject jObject = new JSONObject(s); 
    JSONObject menu = jObject.getJSONObject("menu"); 

    Map<String,String> map = new HashMap<String,String>(); 
    Iterator iter = menu.keys(); 
    while(iter.hasNext()){ 
     String key = (String)iter.next(); 
     String value = menu.getString(key); 
     map.put(key,value); 
    } 
+0

simple pero muy eficiente, gracias. – mass

+1

¿Cuál es la importancia de 'JSONObject'? – 8bitjunkie

+0

@ 8bitjunkie, es org.json: json – chuckskull

9

Mi pseudocódigo ejemplo será el siguiente:

JSONArray jsonArray = "[{id:\"1\", name:\"sql\"},{id:\"2\",name:\"android\"},{id:\"3\",name:\"mvc\"}]"; 
JSON newJson = new JSON(); 

for (each json in jsonArray) { 
    String id = json.get("id"); 
    String name = json.get("name"); 

    newJson.put(id, name); 
} 

return newJson; 
+1

¿Por qué el voto a favor? ¿No ves que dije ** pseudocódigo **? –

+0

Probablemente porque están preguntando sobre un objeto json no json array. – PixMach

+0

@PixMach the String que OP proporcionó es una matriz JSON. Comienza con un '[' y termina con un ']'. –