如何在Android中正确解析此JSON文件?
我需要所有的对象,比如塔1(那里可能有不同的工作日)以及那些工作日的不同时间段。
我已成功使用静态方法,如
JSONObject jArray = ja.getJSONObject("towers").getJSONObject("tower1")
.getJSONObject("tuesday").getJSONObject("11:45-12:20");
然后我使用getString()方法得到value1的值。
但他们需要充满活力,因为有很多种可能性。
{
"towers": {
"tower 1": {
"tuesday": {
"07:30-11:30": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
},
"11:45-12:20": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
}
}
},
"tower 2": {
"wednesday": {
"07:15-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
},
"12:45-15:10": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
},
"15:30-17:05": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
}
},
"tuesday": {
"07:15-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
},
"12:45-15:10": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
},
"14:25-17:05": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3"
}
}
}
},
"building": {
"building 1": {
"monday": {
"07:15-12:20": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
},
"tuesday": {
"07:15-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
},
"wednesday": {
"07:15-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
},
"friday": {
"07:15-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
}
},
"building 2": {
"saturday": {
"08:05-11:00": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
}
},
"building 3": {
"monday": {
"12:45-15:10": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
},
"tuesday": {
"08:55-11:35": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
},
"15:30-17:55": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
},
"thursday": {
"07:15-09:40": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
},
"10:00-12:25": {
"value1": "test value 1",
"value2": "test value 2",
"value3": "test value 3",
"value4": "test value 4"
}
}
}
}
}
答案 0 :(得分:1)
看看这个嵌套的json对象响应解析链接....
http://yodi.polatic.me/example-parse-nested-json-array-and-object-java/
答案 1 :(得分:1)
如果您的json字符串键是动态的,那么您可以将其解析为:
JSONObject root = new JSONObject(yourString);
// get towers JSONObject
JSONObject towers = root.getJSONObject("towers");
// get all Towers name from towers JSONObject
JSONArray alltowerslist=towers.names();
for(int i=0;i<alltowerslist.length();i++){
// get sub towers from towers
JSONObject sub_towers = towers.getJSONObject(alltowerslist.optString(i));
// get days list from sub_towers
JSONArray alldayslist=sub_towers.names();
for(int j=0;j<alldayslist.length();j++){
// get days from sub_towers
JSONObject days_json = sub_towers.getJSONObject(alldayslist.optString(j));
// get time json JSONObject from days_json
JSONArray alltimeslist=days_json.names();
for(int k=0;k<days_json.length();k++){
// get time from sub_towers
JSONObject time_json = days_json.getJSONObject(alltimeslist.optString(k));
// now get all value1 from time_json
JSONArray allvalelist=time_json.names();
for(int l=0;l<time_json.length();l++){
String str_value = time_json.optString(allvalelist.optString(l));
}
}
}
}