来自JsonArray的Java JsonObject

时间:2017-05-01 21:44:34

标签: java json format

我将json存储在javax.json.JsonObject中,对象看起来像这样:

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

}

如何访问子对象“1”中的id键?

我试过了:

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

然而它不起作用,因为getJsonArray()方法的firt调用返回一个JsonValue对象而不是JsonObject,因此下一次调用getJsonArray失败。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您可以使用迭代器方法通过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"));
    }
}

答案 1 :(得分:0)

    int id = obj.getJsonObject("data")
                .getJsonObject("1")
                .getInt("id");

答案 2 :(得分:0)

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