java - 如何解析数组不是逗号分隔的 JSON 字符串?(Gson,Android 工作室)
问题描述
这是 JSON 格式(来自 API 的响应 - https://developer.ticketmaster.com/api-explorer/v2/)。如果我添加“_embedded”(具有场地列表)作为 Event Class 的属性不起作用。
如何从此 JSON 中获取位置?
{ "_embedded":{
"events":[
{
"name":"Hamilton",
"type":"event",
"id":"Z7r9jZ1Ae0EP8",
"test":false,
"url":"http://www.ticketsnow.com/InventoryBrowse/TicketList.aspx?PID=2927950",
"_embedded":{
"venues":[
"0": {
"name":"Reynolds Hall",
"type":"venue",
"id":"Z7r9jZadyb",
"test":false,
"locale":"en-us",
"location":{
"longitude":"-115.162598",
"latitude":"36.182201"
}
}
]
}
}
]
}
}
解决方案
如果这是您的 JSON:
{
"_embedded": {
"events": [
{
"name": "Hamilton",
"type": "event",
"id": "Z7r9jZ1Ae0EP8",
"test": false,
"url": "http://www.ticketsnow.com/InventoryBrowse/TicketList.aspx?PID=2927950",
"_embedded": {
"venues": [
{
"name": "Reynolds Hall",
"type": "venue",
"id": "Z7r9jZadyb",
"test": false,
"locale": "en-us",
"location": {
"longitude": "-115.162598",
"latitude": "36.182201"
}
}
]
}
}
]
}
}
然后您可以像这样检索位置(假设您将其存储在 jString 变量中):
try {
JSONObject jObj = new JSONObject(jString);
String lat = jObj
.getJSONObject("_embedded")
.getJSONObject("events")
.getJSONObject("_embedded")
.getJSONArray("venues")
.getJSONObject(0)
.getJSONObject("location")
.getString("latitude");
String lng = jObj
.getJSONObject("_embedded")
.getJSONObject("events")
.getJSONObject("_embedded")
.getJSONArray("venues")
.getJSONObject(0)
.getJSONObject("location")
.getString("longitude");
LatLng location = new LatLng(Double.parseDouble(lat), Double.parseDouble(lng));
} catch (JSONException | NumberFormatException e) {
e.printStackTrace();
}
推荐阅读
- laravel - 当我返回一个带有变形关系的图像的产品时,它会返回所有产品
- java - 删除 cookie 时违反 SonarQube
- xml - 如何在powershell中从xml获取特定字符串
- android - 如何防止使用 IL2CPP 进行代码剥离?
- java - java和Kotlin混合项目中的依赖解析
- docker - 创世区块创建失败(Hyperledger Fabric)
- reactjs - 如何将 React 应用程序集成到 Wordpress(反应路由器)中?
- python-3.x - 使用 gitpython,我如何签出某个 Git 提交 ID?
- xaml - Xamarin Forms 未找到类型 TouchEffect
- python - 安装 docx 时没有发现模块错误