我似乎遇到的问题是从json文件中访问“更深层次”纬度值。
正在使用以下类型的链接从Google实时访问Json文件: https://maps.googleapis.com/maps/api/place/nearbysearch/json?
这是json中单个对象/数组项的样子,包括“顶层”“结果”。
"results" : [
{
"geometry" : {
"location" : {
"lat" : 55.4628609,
"lng" : -4.6299348
},
"viewport" : {
"northeast" : {
"lat" : 55.46420472989273,
"lng" : -4.628674020107278
},
"southwest" : {
"lat" : 55.46150507010728,
"lng" : -4.631373679892723
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png",
"id" : "0655ceeeddd83f1a901bcef361b22cbfa951ae73",
"name" : "GAME",
"opening_hours" : {
"open_now" : false
},
"place_id" : "ChIJM8hBpZ3WiUgRuWc3KhfMJys",
"plus_code" : {
"compound_code" : "F97C+42 Ayr, UK",
"global_code" : "9C7QF97C+42"
},
"rating" : 4.2,
"reference" : "ChIJM8hBpZ3WiUgRuWc3KhfMJys",
"scope" : "GOOGLE",
"types" : [ "electronics_store", "store", "point_of_interest", "establishment" ],
"vicinity" : "120 High St, Ayr"
},
这里是im解析为字符串后访问json文件数据的方法。
void createMarkersFromJson(String json) throws JSONException {
JSONObject object = new JSONObject(json);
JSONArray jsonArray = object.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
map.addMarker(new MarkerOptions()
.title(jsonObj.getString("name"))
.position(new LatLng(
jsonObj.getJSONArray("geometry").getDouble(0),
jsonObj.getJSONArray("geometry").getDouble(1)
))
);
}
}
答案 0 :(得分:1)
几何不是数组。以 CURLY BRACE {} 开头的JSON是一个对象,而 BRACKET [] 则表示一个数组。试试这个。
JSONArray jsonArray= object.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
JSONObject locationObj = jsonObj .getJSONObject("geometry")
.getJSONObject("location");
map.addMarker(new MarkerOptions()
.title(jsonObj.getString("name"))
.position(new LatLng(
locationObj.getDouble("lat"),
locationObj.getDouble("lng")
))
);
}
希望这有助于您弄清JSON数组和对象之间的区别,以及如何访问它们。干杯