statusSeverityDescription

statusSeverityDescription

因此,我试图获取位于“ lineStatus”内的“ statusSeveretyDescription”。第一个“ for”循环有效,但是嵌套循环返回null。朝正确方向的指针将不胜感激。请在下面查看代码和JSON的图片。

JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {

    JSONObject object = array.optJSONObject(i);
    String line = object.optString("id");

    //nested array
    JSONArray arrayStatus = object.getJSONArray("lineStatuses");
    int len = arrayStatus.length();

    for (int j = 0; j < len; j++) {
        JSONObject o = arrayStatus.getJSONObject(j);
        String statusSeverityDescription = o.optString(
                                            "statusSeverityDescription", "");
    }

    if (line != null) {
        tubeLines.add(line  + statusSeverityDescription);
    }

    // Once we added the string to the array, we notify the arrayAdapter
    arrayAdapter.notifyDataSetChanged();
}


java - 为什么我的代码从嵌套的JSON数组返回&#39;null&#39;的值-LMLPHP

最佳答案

您有2期。

1)您的变量作用域定义不正确,您的statusSeverityDescription变量在for循环结束时就被释放。要解决此问题,请将String statusSeverityDescription移至for循环之外,如下所示

String statusSeverityDescription;
for (int j = 0; j < len; j++) {
   JSONObject o = arrayStatus.getJSONObject(j);
   statusSeverityDescription = o.optString(
                                        "statusSeverityDescription", "");
}


2)statusSeverityDescription应该是一个将所有statusSeverityDescription存储在json有效负载中的数组。因此,使其成为数组,或者了解给定的statusSeverityDescription最后处理的lineStatuses将是剩下的statusSeverityDescription

07-25 22:42