如何解析其中的JSONObjects JSONObject?
我有一个关于从jsonobject获取jsonobjects的问题。如何解析其中的JSONObjects JSONObject?
这是林找回:
{
"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");
从this answer复制:
使用键()迭代器遍历所有属性,并调用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!
}
}
我还没有得到它如何创建我自己的演出对象。 – Timmeeh93 2014-10-17 19:38:31
如果速度是一个优先事项,那么我会建议您手动设置Show'对象的值。例如:'show.setLanguage(showJson.getString('language'))';或者,您可以使用反射来基于JSON键=属性名称的JSON中的键设置属性值。不过,这会对性能产生负面影响。如果你愿意,我可以用一个反射的基本例子来更新 – Jakar 2014-10-17 21:23:23
或者你可以使用已经处理过这种事情的第三方json库。请参阅Drejc的答案 – Jakar 2014-10-17 21:25:14
我会给你一个例子,如何获取你的“数据” JSON对象和增值经销商:
可以说,第二个“someid”为:“123”。现在,我们将获取第二的JSONObject:
JSONObject secondJsonSomeId = resultData.getJsonObject("123");
现在,我们将得到一个 “旗帜”(INT = 1)的JSONObject名为 “缓存” 位于我们secondJsonSomeId的:
int bannerInsecondJsonSomeId = secondJsonSomeId.getJsonObject("cache").getInt("banner");// bannerInsecondJsonSomeId == 1
代码没有编译,所以可能有错误,询问你是否有其他问题。
你想循环'data'中的那些数字条目,并将其中的每个变成一个'JSONObject'?如果是,那么[this](http://*.com/a/13573965/802469)将有所帮助。 – Jakar 2014-10-17 18:56:21
你有什么应该工作得很好。发生了什么/不起作用? – Henry 2014-10-17 18:57:27
@jakar这些数字对象代表一个节目,但我如何循环播放它?因为它不是我返回的JSONArray,所以我有点困惑于如何去做。 – Timmeeh93 2014-10-17 19:00:21