Java android中的JSON解码
如何在android中从这个JSON中检索值? 我想创建一个ArrayList。我已尝试JSONObject访问该值。但它需要为每个城市创建对象。我想访问所有的城市,使用一个循环,如下所示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
{
"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.
}