如何访问JSON值?新手求助获取非数组结构points值及代码无输出问题
访问JSON对象内"points"值的问题排查方案
嘿,我完全懂你现在的困惑——刚接触JSON处理时,对象和数组的访问逻辑确实容易搞混,尤其是之前能跑通的代码换个写法就没输出,这种情况真的挺闹心😅
先帮你理清楚核心逻辑,再排查换方法后没输出的问题:
先明确JSON结构(关键前提)
你提到points在{}对象而非[]数组里,那你的JSON结构大概是这两种情况之一:
// 情况1:顶层就是包含points的对象 { "points": "你需要的字符串值" } // 情况2:points在嵌套对象里 { "route": { "points": "目标字符串值" } }
你之前的可行代码为什么能生效?
你之前用polyline = (String) objPoints.get("points");能拿到值,说明objPoints已经是对应包含points键的JSON对象实例(比如Java里的JSONObject),直接通过键名取值的逻辑是完全正确的。
换方法后没输出?重点排查这几个点
如果换写法后System.out.println没任何内容,大概率是以下原因之一:
- 取值的对象不对:你是不是误把外层结构当成数组去遍历了?比如本来应该取对象,却用了
getJSONArray然后循环,导致根本没拿到包含points的对象实例,循环代码直接跳过。 - 代码没执行到输出那一步:比如循环的条件不满足,或者判断逻辑有问题,导致
System.out.println所在的代码块根本没运行。可以先在循环开头加一句System.out.println("进入循环了");,验证循环是否正常触发。 - 取值返回null但你没处理:如果新写法里强转失败或者取不到值,可能返回
null,如果你的输出代码是System.out.println(polyline);,那null会输出null,但如果连这个都没看到,说明前面的取值逻辑就没拿到对象。
给你一个更稳妥的示例(以Java JSONObject为例)
如果是顶层对象包含points:
// 假设已将JSON字符串解析为JSONObject jsonObj // 用optString避免空指针,取不到值时返回空字符串 String pointsValue = jsonObj.optString("points"); System.out.println("Points值:" + pointsValue);
如果是嵌套对象的情况:
JSONObject nestedObj = jsonObj.optJSONObject("route"); // 先获取嵌套对象 if (nestedObj != null) { String pointsValue = nestedObj.optString("points"); System.out.println("Points值:" + pointsValue); } else { System.out.println("未找到嵌套对象route"); }
快速排查小技巧
- 先打印整个JSON对象的结构:
System.out.println(jsonObj.toString());,确认points键的位置和层级是否符合你的预期。 - 检查新方法里的类型转换逻辑,比如是不是把
JSONObject当成JSONArray处理了,这种情况下代码会跳过对象取值的逻辑,自然没输出。
内容的提问来源于stack exchange,提问作者jb2003
相关产品推荐
相关产品推荐

