Java android中的JSON解码

Java android中的JSON解码,java,android,arrays,json,arraylist,Java,Android,Arrays,Json,Arraylist,如何在android中从这个JSON中检索值? 我想创建一个ArrayList。我已尝试JSONObject访问该值。但它需要为每个城市创建对象。我想访问所有的城市,使用一个循环,如下所示 { "City A": { "Position": { "Longitude": 9.96233, "Latitude": 49.80404 } }, "City B": { "Positi

如何在android中从这个JSON中检索值? 我想创建一个ArrayList。我已尝试JSONObject访问该值。但它需要为每个城市创建对象。我想访问所有的城市,使用一个循环,如下所示

{
    "City A": {
        "Position": {
            "Longitude": 9.96233,
            "Latitude": 49.80404
        }
    },
    "City B": {
        "Position": {
            "Longitude": 6.11499,
            "Latitude": 50.76891
        }
    },
    "City C": {
        "Position": {
            "Longitude": 6.80592,
            "Latitude": 51.53548
        }
    },
    "City D": {
        "Position": {
            "Longitude": 9.50523,
            "Latitude": 51.31991
        }
    },
    "City E": {
        "Position": {
            "Longitude": 9.66089,
            "Latitude": 48.70158
        }
    },
    "City F": {
        "Position": {
            "Longitude": 9.93368,
            "Latitude": 53.55608
        }
    },
    "City G": {
        "Position": {
            "Longitude": 11.56122,
            "Latitude": 48.14496
        }
    },
    "City H": {
        "Position": {
            "Longitude": 13.34253,
            "Latitude": 52.5319
        }
    },
    "City I": {
        "Position": {
            "Longitude": 6.11327,
            "Latitude": 50.77715
        }
    },
    "City J": {
        "Position": {
            "Longitude": 13.36671,
            "Latitude": 52.54344
        }
    }
}
当我想要相同的东西时,如何管理它?

您可以使用JSONObject的
names()
方法。 试试这个:

JSONObject jsonObject = new JSONObject(yourjsonString);
JSONArray jarray = jsonObject.names();

for(int i= 0; i<jarray.length(); i++){
  String name = jarray.getString(i);
}
JSONObject JSONObject=newjsonobject(yourjsonString);
JSONArray jarray=jsonObject.names();
对于(int i=0;i您可以这样做:

City.java(模型类)

App.java:

public class App {
    public static void main(String[] args) {
        // Your JSON string
        String jsonString = "{\"City A\":{\"Position\":{\"Longitude\":9.96233,\"Latitude\":49.80404}},\"City B\":{\"Position\":{\"Longitude\":6.11499,\"Latitude\":50.76891}},\"City C\":{\"Position\":{\"Longitude\":6.80592,\"Latitude\":51.53548}},\"City D\":{\"Position\":{\"Longitude\":9.50523,\"Latitude\":51.31991}},\"City E\":{\"Position\":{\"Longitude\":9.66089,\"Latitude\":48.70158}},\"City F\":{\"Position\":{\"Longitude\":9.93368,\"Latitude\":53.55608}},\"City G\":{\"Position\":{\"Longitude\":11.56122,\"Latitude\":48.14496}},\"City H\":{\"Position\":{\"Longitude\":13.34253,\"Latitude\":52.5319}},\"City I\":{\"Position\":{\"Longitude\":6.11327,\"Latitude\":50.77715}},\"City J\":{\"Position\":{\"Longitude\":13.36671,\"Latitude\":52.54344}}}";
        JSONObject jsonObj = new JSONObject(jsonString);
        List<City> cities = new ArrayList<>(); // The arraylist that will hold the cities

        // A JSON array with the the names of all the cities
        JSONArray cityNames = jsonObj.names();

        for(int i = 0; i < jsonObj.length(); i++) {
            String cityName = cityNames.getString(i);
            JSONObject jsonCity = jsonObj.getJSONObject(cityName);
            JSONObject jsonPosition = jsonCity.getJSONObject("Position");

            cities.add(new City(cityName, jsonPosition.getDouble("Latitude"), jsonPosition.getDouble("Longitude")));
        }

        Collections.sort(cities); // Sort the cities' arraylist by city name
        cities.forEach(System.out::println); // Print the cities
    }

}

要使用for循环获取数据,应该使用JSONArray。 这是您应该使用的响应。 然后使用此代码可以应用循环和列表或ArrayList来保存数据

[{
    "city_name": "City A",
    "Position": {
        "Longitude": 9.96233,
        "Latitude": 49.80404
    }
}, {
    "city_name": "City B",
    "Position": {
        "Longitude": 6.11499,
        "Latitude": 50.76891
    }
 }, {
    "city_name": "City C",
    "Position": {
        "Longitude": 6.80592,
        "Latitude": 51.53548
    }
 }, {
    "city_name": "City D",
    "Position": {
        "Longitude": 9.50523,
        "Latitude": 51.31991
    }
}, {
    "city_name": "City E",
    "Position": {
        "Longitude": 9.66089,
        "Latitude": 48.70158
    }
}, {
    "city_name": "City F",
    "Position": {
        "Longitude": 9.93368,
        "Latitude": 53.55608
    }
}, {
    "city_name": "City G",
    "Position": {
        "Longitude": 11.56122,
        "Latitude": 48.14496
    }
}, {
    "city_name": "City H",
    "Position": {
        "Longitude": 13.34253,
        "Latitude": 52.5319
    }
}, {
    "city_name": "City I",
    "Position": {
        "Longitude": 6.11327,
        "Latitude": 50.77715
    }
}, {
    "city_name": "City J",
    "Position": {
        "Longitude": 13.36671,
        "Latitude": 52.54344
    }
}]
然后,Java代码如下所示:

JSONArray json_array= new JSONArray(responseString);

for(int i= 0; i<json_array.length(); i++){
   JSONObject json_object = json_array.get(i);
   String cityname=json_object.getString("city_name");
   JSONObject json_object_position = json_object.getJSONObject("Position");
   long longitude=json_object_position.getString("Longitude");
   long latitude=json_object_position.getString("Latitude");
   // Save the data in List you want.
}
JSONArray json_数组=新的JSONArray(responseString);

对于(int i=0;i您可以使用Google gson将字符串转换为Java对象。

处理代码响应应该在JsonArray中。它是JsonObject。OP明确说明他使用的是容器
JsonObject
,而不是
JsonArray
。cityNames JsonArray只保留到“City G”.我以后无法访问city@Shanto它对我来说很好。注意数组还没有排序。你在最后得到了正确的输出吗?对不起,我没有注意到。它很好。谢谢斯巴达
[{
    "city_name": "City A",
    "Position": {
        "Longitude": 9.96233,
        "Latitude": 49.80404
    }
}, {
    "city_name": "City B",
    "Position": {
        "Longitude": 6.11499,
        "Latitude": 50.76891
    }
 }, {
    "city_name": "City C",
    "Position": {
        "Longitude": 6.80592,
        "Latitude": 51.53548
    }
 }, {
    "city_name": "City D",
    "Position": {
        "Longitude": 9.50523,
        "Latitude": 51.31991
    }
}, {
    "city_name": "City E",
    "Position": {
        "Longitude": 9.66089,
        "Latitude": 48.70158
    }
}, {
    "city_name": "City F",
    "Position": {
        "Longitude": 9.93368,
        "Latitude": 53.55608
    }
}, {
    "city_name": "City G",
    "Position": {
        "Longitude": 11.56122,
        "Latitude": 48.14496
    }
}, {
    "city_name": "City H",
    "Position": {
        "Longitude": 13.34253,
        "Latitude": 52.5319
    }
}, {
    "city_name": "City I",
    "Position": {
        "Longitude": 6.11327,
        "Latitude": 50.77715
    }
}, {
    "city_name": "City J",
    "Position": {
        "Longitude": 13.36671,
        "Latitude": 52.54344
    }
}]
JSONArray json_array= new JSONArray(responseString);

for(int i= 0; i<json_array.length(); i++){
   JSONObject json_object = json_array.get(i);
   String cityname=json_object.getString("city_name");
   JSONObject json_object_position = json_object.getJSONObject("Position");
   long longitude=json_object_position.getString("Longitude");
   long latitude=json_object_position.getString("Latitude");
   // Save the data in List you want.
}