如何解析JSONObject与其中的其他JSONObjects?

时间:2014-10-17 18:53:45

标签: java android json

我有一个关于从jsonobject中获取jsonobjects的问题。

这就是我的回归:

{
"data": {
    "someid": {
        "air_by_date": 0, 
        "cache": {
            "banner": 1, 
            "poster": 1
        }, 
        "language": "en", 
        "network": "somenetwork", 
        "next_ep_airdate": "somedate", 
        "paused": 0, 
        "quality": "somequality", 
        "show_name": "somename", 
        "status": "Continuing", 
        "tvdbid": someid, 
        "tvrage_id": someid, 
        "tvrage_name": "Showname"
    }, 
    "someid": {
        "air_by_date": 0, 
        "cache": {
            "banner": 1, 
            "poster": 1
        }, 
        "language": "en", 
        "network": "somenetwork", 
        "next_ep_airdate": "", 
        "paused": 0, 
        "quality": "somequality", 
        "show_name": "somename", 
        "status": "Continuing", 
        "tvdbid": someid, 
        "tvrage_id": someid, 
        "tvrage_name": "somename"
    }, 

但是我应该如何创建它们的“ShowObjects”。我知道它如何与JSONArrays一起工作,但我以前从未做过这种JSON。

这就是我现在的情况:

String json = download(url);

JSONObject result = new JSONObject(json);
JSONObject resultData = result.getJSONObject("data");

3 个答案:

答案 0 :(得分:0)

this answer复制:

使用keys()迭代器迭代所有属性,并为每个属性调用get()。

Iterator<String> iter = json.keys();
while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);
    } catch (JSONException e) {
        // Something went wrong!
    }
}

答案 1 :(得分:0)

尝试使用JacksonGson执行这些任务。

使用Jackson,您可以执行以下操作:

class Response() {
     public String message;
     public String result;
     public Map<String, Object> data; 
}

ObjectMapper mapper = new ObjectMapper()
Resonse respone = mapper.readValue(json, Response.class)

或使用自定义反序列化程序读取这些值。

答案 2 :(得分:0)

我将举例说明如何获取&#34;数据&#34;中的对象和变量。 JSON:

让我们说第二个&#34; someid&#34;是:&#34; 123&#34;。我们现在将获取第二个jsonObject:

JSONObject secondJsonSomeId = resultData.getJsonObject("123"); 

现在我们将获取&#34; banner&#34;名为&#34; cache&#34;的jsonObject的(int = 1)位于我们的第二个JsonSomeId:

int bannerInsecondJsonSomeId = secondJsonSomeId.getJsonObject("cache").getInt("banner");// bannerInsecondJsonSomeId == 1

代码未编译,因此可能存在错误,请询问您是否还有其他问题。