2014-06-23 2 views
19

Sto provando ad eseguire iterazioni su un oggetto json usando json simple. Ho visto le risposte dove si può fare un getJSONObject ("figlio") daIterate tramite JSONObject da root in json simple

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

ma se devo solo qualcosa

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

e voglio iterare che oggetto JSON. Questo:

Iterator iter = jObj.keys(); 

getta: non riesce a trovare il simbolo simbolo: i tasti() metodo posizione: classe org.json.simple.JSONObject

risposta

31

Supponendo che l'oggetto JSON viene salvato in un file "simple.json ", è possibile scorrere i coppie attributo-valore come segue:

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

Grazie risolto il problema! Non sono sicuro del motivo per cui sono stato downvoted per la domanda. – PixMach

+0

Ho trascorso la maggior parte della mia mattinata cercando di trovare una soluzione per accedere dinamicamente agli oggetti JSON. Grazie per aver postulato questo! – canadiancreed

+2

ho l'errore non può risolvere '.keyset()' – hadi

4

si può fare come questo

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