You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从JSONArray获取JSONObject时出现JSONObject["name"] not found错误求助

解决JSONObject["name"] not found的问题

嘿,我来帮你排查这个问题!从你的日志和代码来看,问题确实出在obt = new JSONObject(jsonArray.get(k));这一行——明明jsonArray.get(k)打印出来是正常的{"name":"(Id)|(decimal)","value":"0"},但转成新的JSONObject后就变成了空对象{},这才导致后续拿"name"字段报错。

问题原因

你用的应该是org.json这个JSON库吧?它的JSONObject构造方法如果接收的已经是一个JSONObject对象,不会正确把这个对象的属性复制过来,反而会创建一个空的JSONObject。而你的jsonArray.get(k)返回的其实已经是JSONObject类型了,不需要再用构造方法重新实例化。

解决方案

把那一行代码改成直接强转类型就行:

obt = (JSONObject) jsonArray.get(k);

这样修改后,obt就会直接引用JSONArray里原来的那个JSONObject对象,你再调用obt.getString("name")就能正常拿到值了。

验证一下修改后的代码

调整后的循环代码大概是这样:

System.out.println(jsonArray);
for (int k = 0; k < jsonArray.length(); k++) {
    System.out.println(jsonArray.get(k));
    obt = (JSONObject) jsonArray.get(k); // 这里改成强转
    System.out.println(obt); // 现在应该会打印出完整的{"name":"(Id)|(decimal)","value":"0"}
    objectName = obt.getString("name"); // 不再报错
}

这样就能解决你遇到的问题啦!

内容的提问来源于stack exchange,提问作者Lexahen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:56:16