谁能帮助我为此JSON数据文件设置解析。
我想让每列火车发车。结构是出发->全部-> 0、1、2、3等...谢谢
我正在尝试获取诸如时间,目的地和平台之类的某些字符串,然后将其显示在每次出发的列表中。
private void jsonParse()
{
String url = key;
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("REST", response.toString());
try {
JSONArray jsonArray= response.getJSONArray("departures");
Log.d("REST", jsonArray.toString());
for(int i = 0; i < jsonArray.length(); i++)
{
JSONObject departure = jsonArray.getJSONObject(i);
JSONObject all = departure.getJSONObject("all");
String Mode = all.getString("Mode");
TextViewResult.append(Mode + "\n");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Queue.add(request);
}
答案 0 :(得分:0)
如果我正确理解,您将没有结果,对吧?
JSON对象(0、1,...)是“全部”的子级,它是JSONArray
,而不是JSONObject
。而且“出发”似乎是JSONObject
,而不是JSONArray
。您应该:
以JSONObject
的身份离开循环。
以JSONArray
的身份从上一个获得“全部”,因为它是“出发”的孩子,因此也可以自动进行。
在循环中的上一个JSONArray
上进行迭代,获得JSONObject
,它们分别代表一个离开。
因此,try
中的块如下所示:
//logging omitted
JSONObject departuresJSONObj = response.getJSONObject("departures");
JSONArray allJSONArr = departuresJSONObj.getJSONArray("all");
JSONObject departureJSONObj;
String mode;
for (Object departureObj : allJSONArr) {
if (departureObj instanceof JSONObject) {
departureJSONObj = (JSONObject) departureObj;
mode = departureJSONObj.getString("mode"); //mode is lowercase in the JSON
TextViewResult.append(mode + "\n");
}
}
希望这会有所帮助。