java - 如何访问 JSONObject 子字段?

标签 java json google-geocoder

我觉得自己很蠢,但我已经四处寻找了一段时间。我正在使用 google geocoder API,我需要一些关于 json 响应的帮助。这是我拥有的一个 JSONObject:

{
"viewport": {
    "southwest": {
        "lng": -78.9233749802915,
        "lat": 36.00696951970851
    },
    "northeast": {
        "lng": -78.92067701970849,
        "lat": 36.0096674802915
    }
},
"location_type": "ROOFTOP",
"location": {
    "lng": -78.922026,
    "lat": 36.0083185
}
}

如何将“位置”子字段拉出到它们自己的变量中?我尝试了 jsonObjectVariable.getString("location");jsonObjectVariable.getDouble() 等,但它没有正确返回。你怎么称呼 json 对象中的子字段?我读过您可以使用 object.subobject 语法访问子字段,但我只是没有得到我需要的东西。

(我使用 json-org 作为库)

感谢您的帮助!

最佳答案

随着json.org library for Java ,您只能通过首先获取父 JSONObject 实例来获取对象的各个属性:

JSONObject object = new JSONObject(json);
JSONObject location = object.getJSONObject("location");
double lng = location.getDouble("lng");
double lat = location.getDouble("lat");

如果您尝试使用“点分符号”访问属性,如下所示:

JSONObject object = new JSONObject(json);
double lng = object.getDouble("location.lng");
double lat = object.getDouble("location.lat");

那么 json.org 库不是您要找的:它不支持这种访问。


作为一个侧节点,在问题中给定的 JSON 的任何部分调用 getString("location") 是没有意义的。唯一名为“location”的属性的值是另一个具有两个名为“lng”和“lat”的属性的对象。

如果你想要这个“作为一个字符串”,最接近的方法是在 JSONObject location 上调用 toString()(这个答案中的第一个代码片段),这将给你类似 {"lng":-78.922026,"lat":36.0083185} 的东西。

关于java - 如何访问 JSONObject 子字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198013/

相关文章:

json - jq:如何过滤嵌套键?

javascript - Google map 地理编码 AngularJS 忽略回调

java - 有 Swing GUI 元素,没有大空间

java - 泛型类型参数给出错误,但通配符类型参数不会给出错误

Java 字符串统计字母出现次数

javascript - JSON 数组到 Mustache

java - 如何在 jsp 中从 textarea 无错误地输入 ANTLR?

java - 通过在 URL 周围添加引号来修复 JSON

android geocoder void getfromlocation 如何获取地址?

android - 反向地理编码 - 服务不可用 - 重启设备没有明确解决 - 批评我的手动反向地理编码