Android 如何从JSONARRAY内部的JSONOBJECT获取值?

Android 如何从JSONARRAY内部的JSONOBJECT获取值?,android,json,android-json,Android,Json,Android Json,我正在开发一个应用程序,在这个应用程序中我需要显示所有的自动取款机。我正在从GoogleAPI获取数据,但无法获取所有数据。我想获取纬度和经度,但当我获取数据时,我只获取一个值 String url = "https://maps.googleapis.com/maps/api/place/radarsearch/json?location=23.308003,81.3275914&radius=5000&type=atm&key=AIzaSyCYZoSkxHC_Exym

我正在开发一个应用程序,在这个应用程序中我需要显示所有的自动取款机。我正在从GoogleAPI获取数据,但无法获取所有数据。我想获取
纬度
经度
,但当我获取数据时,我只获取一个值

String url = "https://maps.googleapis.com/maps/api/place/radarsearch/json?location=23.308003,81.3275914&radius=5000&type=atm&key=AIzaSyCYZoSkxHC_Exym4YBWvXZXwMyJA7dzEB4";
        try {
            JSONObject jObject = new JSONObject(request(url));
            String jj = jObject.getString("status");

            JSONArray data = jObject.getJSONArray("results");

            location = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map;

            for(int i = 0; i < data.length(); i++){
                JSONObject c = data.getJSONObject(i);
                map = new HashMap<String, String>();

            JSONObject geometry = c.getJSONObject("geometry");
            JSONObject locate = geometry.getJSONObject("location");
            String lat = locate.getString("lat");
            String lng = locate.getString("lng");
            Log.e("Data", lat+"--"+lng);
            //map.put("LocationID", c.getString("id"));
            //map.put("placeId",c.getString("place_id"));
            //location.add(map);


            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
stringurl=”https://maps.googleapis.com/maps/api/place/radarsearch/json?location=23.308003,81.3275914&radius=5000&type=atm&key=AIzaSyCYZoSkxHC_Exym4YBWvXZXwMyJA7dzEB4”;
试一试{
JSONObject jObject=新的JSONObject(请求(url));
字符串jj=jObject.getString(“状态”);
JSONArray data=jObject.getJSONArray(“结果”);
位置=新的ArrayList();
HashMap图;
对于(int i=0;i
我建议您学习一些语法分析教程。稍后,您可以使用诸如gson或jackson之类的库来解析json。现在很多人自己并不编写json解析代码

一旦您理解了json结构,您应该能够自己解析它

你的json

"results": [ // array
    {        //  jsonobject
        "geometry": {  // geometry jsonobject
            "location": {   // location jsonobject
                // values
                "lat": 23.3085793, 
                "lng": 81.353116
            }
        },
        ... // the rest of the json
然后

之后

   for(int i = 0; i < data.length(); i++){
       JSONObject c = data.getJSONObject(i);
       JSONObject geometry = c.getJSONObject("geometry"); 
       JSONObject location = geometry.getJSONObject("location");
       String lat = location.getString("lat");
       String lng = location.getString("lng"); 

       Log.d("Location->"," "+lat+" "+lng);
       // now do what you want.  
       // You probably meant to do
       map = new HashMap<String, String>();
       map.put("lat",lat);
       map.pt("lng",lng);
       location.add(map);

   }
for(int i=0;i”、“+lat+”+lng);
//现在做你想做的。
//你可能是有意的
map=新的HashMap();
地图放置(“lat”,lat);
pt地图(“液化天然气”,液化天然气);
位置。添加(地图);
}

您还没有将从Json获得的lat lon值放在location(HashMap)@user3810679中。我建议您阅读有关改装的信息,而GSON/JacksonI无法获取所有纬度和经度值。我得到的是单一的纬度和经度only@user3810679您将获得所有值<代码>Log.e(“位置->”、“”+lat+“”+lng)将此添加到上面的循环中我使用了相同的东西,但我不知道如何获取所有纬度和经度value@user3810679如果您正在执行相同的操作,请向我们显示更新的代码。你对这些值什么都没做,你的hashmap也没用。请检查我的更新代码,是的,现在我没有使用hashmap。首先,我检查是否得到了所有的值
   for(int i = 0; i < data.length(); i++){
       JSONObject c = data.getJSONObject(i);
       JSONObject geometry = c.getJSONObject("geometry"); 
       JSONObject location = geometry.getJSONObject("location");
       String lat = location.getString("lat");
       String lng = location.getString("lng"); 

       Log.d("Location->"," "+lat+" "+lng);
       // now do what you want.  
       // You probably meant to do
       map = new HashMap<String, String>();
       map.put("lat",lat);
       map.pt("lng",lng);
       location.add(map);

   }