繁体   English   中英

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

[英]How to parse JSONObject with other JSONObjects inside it?

我有一个关于从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");

从此答案复制:

使用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!
    }
}

尝试将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)

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

我将举一个示例,说明如何在“数据” json中获取对象和变量:

可以说第二个“ someid”是:“ 123”。 我们现在将获取第二个jsonObject:

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

现在,我们将获取位于secondJsonSomeId中的名为“ cache”的jsonObject的“横幅”(int = 1):

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

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

暂无
暂无

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

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