我有一个关于从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");
答案 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)
使用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
代码未编译,因此可能存在错误,请询问您是否还有其他问题。