【问题标题】:Java JSONObject get childrenJava JSONObject 获取孩子
【发布时间】:2014-07-29 18:10:10
【问题描述】:

我想在我的网站上创建 gmap。

我找到了,如何获取坐标。

    {
   "results" : [
      {
         // body
         "formatted_address" : "Puławska, Piaseczno, Polska",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 52.0979041,
                  "lng" : 21.0293984
               },
               "southwest" : {
                  "lat" : 52.0749265,
                  "lng" : 21.0145743
               }
            },
            "location" : {
               "lat" : 52.0860667,
               "lng" : 21.0205308
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 52.0979041,
                  "lng" : 21.0293984
               },
               "southwest" : {
                  "lat" : 52.0749265,
                  "lng" : 21.0145743
               }
            }
         },
         "partial_match" : true,
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}

我想得到:

 "location" : {
           "lat" : 52.0860667,
           "lng" : 21.0205308
        },

来自这个 Json。

我决定使用 json-simple

<dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>

我的代码是:

String coordinates = //JSON from google

JSONObject json = (JSONObject)new JSONParser().parse(coordinates);

我可以得到第一个孩子:“结果”

String json2 = json.get("results").toString();

json2 显示正确的“结果”正文

但我无法获得“位置”孩子。

怎么做?

谢谢

【问题讨论】:

    标签: java json jsonobject


    【解决方案1】:

    我认为您需要将对 json.get("results") 的调用转换为 JSONArray

    String coordinates = //JSON from google
    
    JSONObject json = (JSONObject)new JSONParser().parse(coordinates);
    
    JSONArray results = (JSONArray) json.get("results");
    
    JSONObject resultObject = (JSONObject) results.get(0);
    
    JSONObject location = (JSONObject) resultObject.get("location");
    
    String lat = location.get("lat").toString();
    
    String lng = location.get("lng").toString()
    

    诀窍是查看您要反序列化的 json 部分的类型并将其转换为适当的类型。

    【讨论】:

      【解决方案2】:

      关于这个link

      com.google.gson.JsonParser#parse(java.lang.String) 现已弃用

      所以使用com.google.gson.JsonParser#parseString,效果很好

      Kotlin 示例:

      val mJsonObject = JsonParser.parseString(myStringJsonbject).asJsonObject
      

      Java 示例:

      JsonObject mJsonObject = JsonParser.parseString(myStringJsonbject).getAsJsonObject();
      

      【讨论】:

        猜你喜欢
        • 2013-09-27
        • 1970-01-01
        • 1970-01-01
        • 2018-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多