我是Android编程新手,我想知道如何从JSONarray中获取某个对象。
我的JSON看起来像这样:
{"results" : [
{
"address_components" : [
{
"long_name" : "Contern",
"short_name" : "Contern",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Luxembourg",
"short_name" : "Luxembourg",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Luxembourg",
"short_name" : "LU",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Contern, Luxembourg",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 49.621830,
"lng" : 6.302790
},
"southwest" : {
"lat" : 49.56759010,
"lng" : 6.195380
}
},
"location" : {
"lat" : 49.58515930,
"lng" : 6.2274880
},
我想从位置提取lat和lng。 我的代码是:
arr = json.getJSONArray("results");
JSONObject location=arr.getJSONObject(4);
double lng = location.getDouble("lng");
double lat = location.getDouble("lat");
答案 0 :(得分:2)
我想说你的json文件是错误的,但仔细看后我认为你的代码很糟糕:)我想它现在不会让你想要的。 在这种情况下,“结果”是JsonArray - 但是一个完整的JsonObjects数组,而不是它的属性! 完整JsonObject是对象 - address_components,format_address,geometry等。“location”也是“几何”对象的一部分。
如果您确定“result”数组中只有一个对象 - 您可以这样做:
arr = json.getJSONArray("results");
if (arr.length() > 0){
JSONObject resultObject = arr.getJSONObject(0);
JSONObject geometry = resultObject.getJSONObject("geometry");
JSONObject location = geometry.getJSONObject("location");
double lng = location.getDouble("lng");
double lat = location.getDouble("lat");
}
如果结果中有多个对象 - 我想你需要遍历它们并找到你需要的东西。
答案 1 :(得分:0)
您好请参阅以下代码
JSON字符串
{
"result": "success",
"countryCodeList":
[
{"countryCode":"00","countryName":"World Wide"},
{"countryCode":"kr","countryName":"Korea"}
]
}
以下是我提取国家/地区详情
JSONObject json = new JSONObject(jsonstring);
JSONArray nameArray = json.names();
JSONArray valArray = json.toJSONArray(nameArray);
JSONArray valArray1 = valArray.getJSONArray(1);
valArray1.toString().replace("[", "");
valArray1.toString().replace("]", "");
int len = valArray1.length();
for (int i = 0; i < valArray1.length(); i++) {
Country country = new Country();
JSONObject arr = valArray1.getJSONObject(i);
country.setCountryCode(arr.getString("countryCode"));
country.setCountryName(arr.getString("countryName"));
arrCountries.add(country);
}