El *_*ino 10 java json 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
}
}
Run Code Online (Sandbox Code Playgroud)
如何将"位置"子字段拉入自己的变量?我试着jsonObjectVariable.getString("location");
和jsonObjectVariable.getDouble()
等,但它无法正常返回.你在json对象中称为子字段是什么?我已经读过你可以使用object.subobject语法访问子字段,但我只是没有得到我需要的东西.
(我使用json-org作为库)
谢谢您的帮助!
Phi*_*art 19
使用json.org Java库,您只能通过首先获取父JSONObject
实例来获取对象的各个属性:
JSONObject object = new JSONObject(json);
JSONObject location = object.getJSONObject("location");
double lng = location.getDouble("lng");
double lat = location.getDouble("lat");
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用"点分表示法"访问属性,请执行以下操作:
JSONObject object = new JSONObject(json);
double lng = object.getDouble("location.lng");
double lat = object.getDouble("location.lat");
Run Code Online (Sandbox Code Playgroud)
然后json.org库不是你想要的:它不支持这种访问.
作为一个副节点,调用getString("location")
问题中给出的JSON的任何部分都没有意义.被称为"location"的唯一属性的值是另一个具有两个属性"lng"和"lat"的对象.
如果你想这个"作为一个字符串",最接近的就是调用toString()
上JSONObject location
(在这个答案第一个代码段),这将给你喜欢的东西{"lng":-78.922026,"lat":36.0083185}
.
我相信你需要使用 jsonObjectVariable.getJSONObject("location") ,它反过来返回另一个 JSONObject。
然后,您可以对该对象调用 getDouble("lng") 或 getDouble("lat")。
例如
double lat = jsonObjectVariable.getJSONObject("location").getDouble("lat");
Run Code Online (Sandbox Code Playgroud)