Разобрать объект JSON только со строкой и значением - PullRequest
36 голосов
/ 10 декабря 2010

У меня проблема при попытке анализа с минимальным значением для сопоставления в Android.

Есть пример JSON-формата с дополнительной информацией, например:

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

Этот пример наиболее часто используетсяи простой в использовании, просто используйте getString("id") или getValue("name").

Но как мне разобрать карту, используя этот формат JSON только с строковым и минимальным форматом значения для коллекции карт Java, используя цикл.И потому что строка json всегда будет отличаться одна от другой.Например:

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

Спасибо

Ответы [ 2 ]

85 голосов
/ 10 декабря 2010

Вам нужно получить список всех ключей, зациклить их и добавить их на карту, как показано в примере ниже:

    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);
    }
9 голосов
/ 10 декабря 2010

Мой псевдокод пример будет выглядеть следующим образом:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...