首页 > 解决方案 > 遍历 JSONObject 中的 JSONArray

问题描述

我有JSONObject一个JSONArray, 和一个键。我想iterate通过数组并red在每个JSONObject.

这是我到目前为止所拥有的,但它给了我一个JSONException: JSONObject["color"] not found

JSONArray arr = responseBody.getJSONArray("carModels");
String redServices = "";
for(int i = 0; i < arr.length(); i++)
{
    if(arr.getJSONObject(i).get("color").equals("red"))
        redServices += arr.getJSONObject(i).toString() + ", ";      
}

这是 jsonObject 的示例

 {
  "carModels": [
    {
        "toyota": {
            "color": "green"
        }
    },
    {
        "mazda": {
            "color": "red"
        }
    },
    {
        "vw": {
            "color": "red"
        }
    },
    {
        "ford": {
            "color": "red"
        }
    },
    {
        "honda": {
            "color": "black"
        }
    },
    {
        "tesla": {
            "color": "white"
        }
    },

],
"average": "red"
}

标签: javascriptjavajsoniteration

解决方案


请找到以下适用于给定 json 的代码,您可以根据实际 json 对其进行修改:

public String getRedServicesFromJSON(JSONObject object){
    JSONArray arr = object.getJSONArray("carModels");
    StringJoiner joiner = new StringJoiner(", ");
    for(int i = 0;i < arr.length(); i++){
        if("red".equals(arr.getJSONObject(i).getJSONObject(arr.getJSONObject(i).names().getString(0)).get("color")))
            joiner.add(arr.getJSONObject(i).toString());      
    }
    return joiner.toString();
}

推荐阅读