JSONObject jsonObject = new JSONObject(result);
for (int i = 1; i <= jsonObject.length(); i++) {
jsonObject = jsonObject.getJSONObject(Integer.toString(i));
Double lat = jsonObject.getDouble("latitude");
Double lon = jsonObject.getDouble("longitude");
int sno = jsonObject.getInt("sno");
Toast.makeText(getBaseContext(), "" + lat + lon + sno,
Toast.LENGTH_SHORT).show();
MarkerOptions marker = new MarkerOptions()
.position(new LatLng(lat, lon)).title("New")
.snippet("are here");
googleMap.addMarker(marker);
}
答案 0 :(得分:3)
问题是您在尝试获取内部JSONObject
时使用相同的JSONObject
变量。因此,在第一个for循环之后,第二个将尝试从内部JSONObject
获取JSONObject
,而不是从父JSONObject
获取。{/ p>
为此内部JSONObject
声明一个新变量
JSONObject jsonObject = new JSONObject(result);
for (int i = 1; i <= jsonObject.length(); i++) {
JSONObject jsonInnerObject = jsonObject.getJSONObject(Integer.toString(i));
Double lat = jsonInnerObject.getDouble("latitude");
Double lon = jsonInnerObject.getDouble("longitude");
// Add your other stuff here
}
另一种最佳方法是使用密钥进行迭代。这并不需要索引。您可以使用任何值代替索引。
JSONObject jsonObject = new JSONObject(json);
Iterator<Object> iterator = jsonObject.keys();
while (iterator.hasNext()){
Object obj = iterator.next();
JSONObject innerJsonObject = jsonObject.getJSONObject(obj.toString());
if(innerJsonObject != null) {
Double lat = innerJsonObject.getDouble("latitude");
Double lon = innerJsonObject.getDouble("longitude");
// do your other stuff here to add to marker
}
}