java - jsonarray - Iterar a través de JSONObject desde la raíz en json simple
iterate jsonarray java (2)
Estoy tratando de iterar sobre un objeto json usando json simple. He visto respuestas donde puedes hacer un objeto getJSONObject ("child") desde
{ "child": { "something": "value", "something2": "value" } }
pero que tal si solo tengo algo
{
"k1":"v1",
"k2":"v2",
"k3":"v3"
}
y querer iterar sobre ese objeto json. Esta:
Iterator iter = jObj.keys();
throws: no se puede encontrar el símbolo del símbolo: método keys () ubicación: clase org.json.simple.JSONObject
Puedes hacer asi
String jsonstring = "{ /"child/": { /"something/": /"value/", /"something2/": /"value/" } }";
JSONObject resobj = new JSONObject(jsonstring);
Iterator<?> keys = resobj.keys().iterator();
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"));
}
}
Suponiendo que su objeto JSON se guarda en un archivo "simple.json", puede iterar sobre los pares de atributo-valor de la siguiente manera:
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));
}