简体   繁体   English

来自JsonArray的Java JsonObject

[英]Java JsonObject from JsonArray

I have Json stored in javax.json.JsonObject, the object look like this: 我将Json存储在javax.json.JsonObject中,该对象如下所示:

{  
 "status":"ok",
 "meta":{  
    "count":2
 },
 "data":{  
    "1":{  
       "id":40,
    },
    "17":{  
       "id":48,
    }
 }

} }

How do I access the id key in the sub-object "1" ? 如何访问子对象“ 1”中的id键?

I tried: 我试过了:

obj.getJsonArray("data").getJsonArray("1").getJsonNumber("id").intValue();

However it does not work because the firt call of getJsonArray() method returns a JsonValue object not a JsonObject so the next call of getJsonArray fails. 但是,由于getJsonArray()方法的首次调用返回的是JsonValue对象而不是JsonObject,所以它不起作用,因此下一次getJsonArray调用失败。 Any ideas ? 有任何想法吗 ?

You can use an iterator approach to iterate thru the JSONObject: 您可以使用迭代器方法遍历JSONObject:

JSONObject json = new JSONObject(input);

JSONObject jsonData = json.getJSONObject("data");
Iterator<?> jsonDataKeys = jsonData.keys();

while (jsonDataKeys.hasNext()) {
    String key = (String)jsonDataKeys.next();
    if (jsonData.get(key) instanceof JSONObject) {
        System.out.println(((JSONObject) jsonData.get(key)).getInt("id"));
    }
}
    int id = obj.getJsonObject("data")
                .getJsonObject("1")
                .getInt("id");
JSONObject jObject = null;    
jObject = new JSONObject(String you want to parse);
JSONObject j1Object = jObject.getJSONObject("data");
JSONObject j2Object = j1Object.getJSONObject("1");
String s1=j2Object.getString("id");
System.out.println(s1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM