java - getJSONObject 错误:JSONObject["..."] 不是 JSONObject
问题描述
我正在尝试解析 JSON 字符串,但在尝试获取嵌套对象时出错:
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject);
System.out.println(jsonObject.keySet());
System.out.println(jsonObject.getJSONObject("matches"));
下面是控制台中的输出。据我所见,JSON 是有效的,因为 jsonObject 是在没有错误的情况下创建的。但是当我尝试获取“匹配”时,它会引发错误。我已经将我的代码与教程进行了比较,但我看不出问题出在哪里:
{"matches":[{"id":233028,"awayTeam":{...
[matches, count, filters, competition]
Error in client: JSONObject["matches"] is not a JSONObject.
有什么我做错了吗?如果需要,很乐意提供任何进一步的信息。
解决方案
matches
是一个数组,而不是一个对象。使用getJSONArray
:
System.out.println(jsonObject.getJSONArray("matches"));
(或更有用的是:
System.out.println(Arrays.deepToString(jsonObject.getJSONArray("matches")));
因为System.out.println
数组本身并不能真正显示有用的信息。)
推荐阅读
- android - 在 Playstore Publish 中为 SEND_SMS 权限选择哪个检查选项?
- html - 根据表格的年龄显示表格的性别和字体颜色
- python - 数字货运市场
- javascript - 设置一个等于 ajax 输出的变量,该变量仅在调用时更改
- python - 传递值的形状是 (2, 1),索引暗示 (1, 1)..可能是什么原因?
- regex - Perl正则表达式一行文件
- sql-server - SQL Server 中的游标花费太多时间来处理 3500 万条记录
- excel - VBA - 根据单元格值取消隐藏行
- python-3.x - 如何在 Python 中的终端密码提示中输入密码
- python - 如何切片数组以排除一行?