java - 从 URL 的数组中获取数组

标签 java android arrays json

我试图从 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);
                        }
                    }
                }

示例: JSONXML

{
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/

相关文章:

php - 调用时传递引用错误,无法修复代码

C++打印二维数组

java - 让 JTextPane 根据内容调整高度

java - 为什么在 Java 中解析 double 创建新数字?

java - 在没有EOF的情况下停止读取java中的输入

Android 的 Surface 类给我一个 "already connected"错误和一个 IllegalArgumentException

android - fragment 中的 onActivityResult() 始终接收 null Intent

Java retainAll() 不工作?

android - Httppost 找不到方法 setConfig android

Android - 随机列出按钮