2014-06-23 1 views
19

Я пытаюсь перебрать объект json с помощью json simple. Я видел ответы, где вы можете сделать getJSONObject («ребенок») отИтерация через JSONObject от root в json simple

{ "child": { "something": "value", "something2": "value" } } 

, но что, если я только что-то

{ 
"k1":"v1", 
"k2":"v2", 
"k3":"v3" 
} 

и хотите перебрать этого JSon объекта. Это:

Iterator iter = jObj.keys(); 

броски: не может найти символу символ: ключи методов() местоположение: класс org.json.simple.JSONObject

ответ

31

Если предположить, что объект JSON сохраняется в файле «simple.json »вы можете перебирать пар атрибут-значение следующим образом:

JSONParser parser = new JSONParser(); 

Object obj = parser.parse(new FileReader("simple.json")); 

JSONObject jsonObject = (JSONObject) obj; 

for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) { 
    String key = (String) iterator.next(); 
    System.out.println(jsonObject.get(key)); 
} 
+0

Спасибо, решена проблема! Не знаю, почему я получил решение за этот вопрос. – PixMach

+0

Провел большую часть своего утра, пытаясь найти решение для доступа к объектам json динамически. Спасибо, что положили это! – canadiancreed

+2

У меня ошибка не может решить '.keyset()' – hadi

4

вы можете сделать, как это

String jsonstring = "{ \"child\": { \"something\": \"value\", \"something2\": \"value\" } }"; 
JSONObject resobj = new JSONObject(jsonstring); 
Iterator<?> keys = resobj.keys(); 
while(keys.hasNext()) { 
    String key = (String)keys.next(); 
    if (resobj.get(key) instanceof JSONObject) { 
     JSONObject xx = new JSONObject(resobj.get(key).toString()); 
     Log.d("res1",xx.getString("something")); 
     Log.d("res2",xx.getString("something2")); 
    } 
}