我试图从 JSON 数组中提取“stops”数组,但它包含在另一个名为“results”的数组中。如何获取“停靠点”并将它们放入 JSON 数组中?
变量已在代码中进一步声明(未显示)。还有一些陷阱(未显示)。
代码给我的错误是:
2018-12-19 14:31:38.892 6650-6787/ie.[college].student.[studentid].dublinbuses E/StopIdResultsActivity: An error occurred! Error: No value for stops.
我需要查看的代码部分是:
protected Void doInBackground(Void... arg0) {
...
...
try {
origin = "";
destination = "";
route_result = "";
JSONObject jsonObj = new JSONObject(routeid_jsonStr);
...
}
else {
JSONArray results = jsonObj.getJSONArray("results");
//looping through All Contacts
for (int i = 0; i < results.length(); i++) {
JSONObject r = results.getJSONObject(i);
JSONArray stops = jsonObj.getJSONArray("stops");
for (int j = 0; j < stops.length(); j++) {
JSONObject s = stops.getJSONObject(j);
stopid = r.getString("stopid");
shortname = r.getString("shortname");
shortnamelocalized = r.getString("shortnamelocalized");
HashMap<String, String> stop = new HashMap<>();
// adding each child node to HashMap key => value
stop.put("stopid", stopid);
stop.put("shortname", shortname);
stop.put("shortnamelocalized", shortnamelocalized );
resultList.add(stop);
}
}
}
{
errorcode: "0",
errormessage: "",
numberofresults: 4,
route: "77a",
timestamp: "19/12/2018 13:03:06",
results: [
{
operator: "bac",
origin: "Citywest",
originlocalized: "Iarthar na Cathrach ",
destination: "Ringsend",
destinationlocalized: "",
lastupdated: "27/06/2016 09:02:52",
stops: [
{
stopid: "1358",
displaystopid: "1358",
shortname: "Dame Street",
shortnamelocalized: "Sráid an Dáma",
fullname: "Dame Street",
fullnamelocalized: "",
latitude: "53.34430611",
longitude: "-6.262861111",
operators: [
{
name: "bac",
routes: [
"77A"
]
}
]
},
...
...
最佳答案
请看一下这些行:
JSONObject r = results.getJSONObject(i);
JSONArray stops = jsonObj.getJSONArray("stops");
我认为应该改为:
JSONObject r = results.getJSONObject(i);
JSONArray stops = r.getJSONArray("stops");
这里你还混淆了变量:
stopid = r.getString("stopid");
shortname = r.getString("shortname");
shortnamelocalized = r.getString("shortnamelocalized");
应该是:
stopid = s.getString("stopid");
shortname = s.getString("shortname");
shortnamelocalized = s.getString("shortnamelocalized");
关于java - 从 URL 的数组中获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853523/