java - 如何在java中读取嵌套的json列表?
问题描述
我需要获取类型值和 networkUsage 下载值并且列表是动态的
Json 响应是
{
"count": 2,
"devices": [
{
"name": "xyz",
"type": 1,
"subType": 0,
"signalStrength": -37,
"dataUsage": {
"download": 84,
"upload": 84
},
"networkUsage": {
"download": 0,
"upload": 0
},
"speed": {
"download": 0,
"upload": 0
}
},
{
"name": "abcd",
"type": 2,
"subType": 0,
"signalStrength": -37,
"dataUsage": {
"download": 84,
"upload": 84
},
"networkUsage": {
"download": 0,
"upload": 0
},
"speed": {
"download": 0,
"upload": 0
}
}
]
}
我尝试了这种方式并得到了错误。
JSONArray jsonarray = new JSONArray(response);
System.out.println(String.format("JSONArray length => %d", jsonarray.length()));
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject obj1 = jsonarray.getJSONObject(i);
String name = obj1.getString("name");
int type = obj1.getInt("type");
System.out.println(name);
System.out.println(type);
}
线程“主”org.json.JSONException 中的异常:JSONArray 文本必须以 org.json.JSONTokener.syntaxError(JSONTokener.java:496) 处 org.json.JSONArray.(JSONArray.java) 处的字符 1 处的 '[' 开头:115) 在 org.json.JSONArray.(JSONArray.java:159) 在 com.calix.pages.test.main(test.java:91)
解决方案
JSONObject jsonobj = new JSONObject(response);
JSONArray jsonarray = jsonobj.getJSONArray("devices");
for (int i = 0; i < jsonobj.getInt("count"); i++) {
JSONObject obj1 = jsonarray.getJSONObject(i);
String name = obj1.getString("name");
int type = obj1.getInt("type");
System.out.println(name);
System.out.println(type);
}
推荐阅读
- php - 如何修复jquery错误意外令牌错误
- javascript - 在数组上反应映射以创建列表
- swift - 在 Swift 中,导航栏消失并且永远不会回来
- groovy - 显示一个键的多个值
- python - 从数据库中获取 TransmogrifAI 的数据
- python-3.x - Pandas Excel 读取 - 整数列在循环时转换为浮点数
- angular5 - ng add 不适用于使用 angular 5 的 ngx-bootstrap
- android - 在 Service 、Alarm Manager 和 Job Scheduler 中哪个概念最好使用
- azure - 如何在 Azure 流分析中解压缩 Gzip 数据?
- redis - Redis 键在集群模式下被自动删除