18 votos

Analizar un objeto JSON con la cadena de valor y sólo

Tengo un problema al tratar de analizar con un mínimo de valor para mapa en Android.

Hay algunos ejemplos de formato JSON con más información ex:

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

Este el ejemplo más común de usar y fácil de usar solo uso getString("id") o getValue("name").

Pero, ¿cómo puedo analizar para asignar el uso de este formato JSON con sólo un string y el valor mínimo de formato java colección de mapas de uso de bucle. Y porque la cadena json siempre diferentes el uno con el otro. ex:

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

Gracias

48voto

dogbane Puntos 85749

Usted necesita para obtener una lista de todas las teclas, bucle sobre ellos y agregarlos a su mapa, como se muestra en el ejemplo a continuación:

    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);
    }

9voto

Buhake Sindi Puntos 38654

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;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: