Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';t JSONObject是否在Android中获取嵌套字段的值?_Android_Json_Parsing_Google Geocoder - Fatal编程技术网

为什么可以';t JSONObject是否在Android中获取嵌套字段的值?

为什么可以';t JSONObject是否在Android中获取嵌套字段的值?,android,json,parsing,google-geocoder,Android,Json,Parsing,Google Geocoder,我正在构建一个android应用程序,它可以从API获取天气数据。但是,API调用不适用于嵌套字段。应用程序将整个JSON数据作为JSONObject接收。它适用于单个字段(例如:“结果”),但不适用于嵌套字段。以下是我的JSON对象代码: JSONObject latlong = new JSONObject(json); String lat = latlong.getInt("results.geometry.location.lat") + ""; String lng

我正在构建一个android应用程序,它可以从API获取天气数据。但是,API调用不适用于嵌套字段。应用程序将整个JSON数据作为JSONObject接收。它适用于单个字段(例如:“结果”),但不适用于嵌套字段。以下是我的JSON对象代码:

JSONObject latlong = new JSONObject(json);
    String lat = latlong.getInt("results.geometry.location.lat") + "";
    String lng = latlong.getInt("results.geometry.location.lng") + "";
以下是指向JSON数据的链接:


请帮忙

JSON主要由对象(用{}括起来)和数组(用[]括起来)组成

因此,有必要结合使用JSONObject和JSONArray来遍历JSON文件的树

JSONObject类和JSONArray都有一个“getJSONObject”和一个“getJSONArray”方法来访问内部对象和数组

因此,类似这样的方法应该会奏效:

    JSONObject latLong = new JSONObject(json).getJSONArray("results")
                                             .getJSONObject("geometry")
                                             .getJSONObject("location");

    String lat = String.valueOf(latLong.getDouble("lat"));
    String lng = String.valueOf(latLong.getDouble("lng"));
尝试一下,如果需要的话做出正确的调整,因为我自己还没有尝试过


让我知道它是否有效;)

JSON主要由对象(用{}括起来)和数组(用[]括起来)组成

因此,有必要结合使用JSONObject和JSONArray来遍历JSON文件的树

JSONObject类和JSONArray都有一个“getJSONObject”和一个“getJSONArray”方法来访问内部对象和数组

因此,类似这样的方法应该会奏效:

    JSONObject latLong = new JSONObject(json).getJSONArray("results")
                                             .getJSONObject("geometry")
                                             .getJSONObject("location");

    String lat = String.valueOf(latLong.getDouble("lat"));
    String lng = String.valueOf(latLong.getDouble("lng"));
尝试一下,如果需要的话做出正确的调整,因为我自己还没有尝试过


让我知道它是否有效;)

你为什么不试试?在这种情况下,这会让你的生活更轻松。你为什么不试试呢?在这种情况下,这会让你的生活更轻松。是的,谢谢你,我明白了!代码中唯一需要更改的是,在JSONArray上调用getJSONObject时,必须传递一个int。是的,谢谢,我知道了!代码中唯一需要更改的是,在JSONArray上调用getJSONObject时,必须传递一个int。