我觉得自己很蠢,但我已经四处寻找了一段时间。我正在使用 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/