Java 尝试从JSONObject中获取JSONArray失败

Java 尝试从JSONObject中获取JSONArray失败,java,json,Java,Json,我正在使用Spark用Java编写一个API(与我的问题无关,但这提供了一点上下文)。 我有以下JSON(与我的后端返回的完全相同): 这似乎是有效的,根据 我将其作为JSONObject存储在代码中(因此,基本上,上面的内容是toString()的结果)。 然而,当我试图在JSONArray中提取“活动组”时,我得到: org.json.JSONException: JSONObject["campaignGroups"] not found. 实际上,即使只是尝试获取该问题的任何密钥,我也

我正在使用Spark用Java编写一个API(与我的问题无关,但这提供了一点上下文)。 我有以下JSON(与我的后端返回的完全相同):

这似乎是有效的,根据 我将其作为JSONObject存储在代码中(因此,基本上,上面的内容是toString()的结果)。 然而,当我试图在JSONArray中提取“活动组”时,我得到:

org.json.JSONException: JSONObject["campaignGroups"] not found.
实际上,即使只是尝试获取该问题的任何密钥,我也会遇到这个错误,例如,调用get(“DBID”)将返回相同的错误

我对这里发生的事情感到有点困惑,任何帮助都将不胜感激

编辑:因为这只在异常中很明显,所以我使用的是json.org

谢谢

对该对象调用toString()应该返回一个类似“[object object]”的字符串,如果必须对其调用toString方法,则还需要对其调用JSON.parse(此处为您的对象)以访问其属性

另外,看起来您需要查找您的_object_name.CfgCampaign.campatinggroups或您的_object_name[“CfgCampaign”][“campatinggroups”,但是如果没有访问活动组所使用的代码,很难判断

如果你设置了

const obj = {"CfgCampaign":{"callingLists":{"CfgCallingListInfo":{"callingListDBID":{"value":126},"share":{"value":10},"isActive":{"value":2}}},"xmlns":"http://schemas.genesyslab.com/Protocols/Configuration/ConfServer/2005/","DBID":{"value":101},"name":{"value":"WI_Camp_1"},"state":{"value":1},"campaignGroups":{"CfgCampaignGroupInfo":[{"groupType":{"value":5},"dialerDBID":{"value":0},"optMethodValue":{"value":80},"origDNDBID":{"value":0},"numOfChannels":{"value":10},"groupDBID":{"value":826},"isActive":{"value":2},"scriptDBID":{"value":0},"trunkGroupDNDBID":{"value":0},"operationMode":{"value":1},"dialMode":{"value":2},"statServerDBID":{"value":176},"optRecBuffSize":{"value":6},"optMethod":{"value":1},"minRecBuffSize":{"value":4}},{"groupType":{"value":5},"dialerDBID":{"value":0},"optMethodValue":{"value":80},"origDNDBID":{"value":0},"numOfChannels":{"value":10},"groupDBID":{"value":827},"isActive":{"value":2},"scriptDBID":{"value":0},"trunkGroupDNDBID":{"value":0},"operationMode":{"value":1},"dialMode":{"value":2},"statServerDBID":{"value":176},"optRecBuffSize":{"value":6},"optMethod":{"value":1},"minRecBuffSize":{"value":4}}]},"scriptDBID":{"value":0},"tenantDBID":{"value":101}}}
然后,要在活动组中获取阵列,您需要如下所示:

obj.CfgCampaign.campaignGroups

我相信您遇到的错误是由于外部JSON对象“CfgCampaign”导致的,该对象包含您的其余数据。下面显示了如何使用org.JSON库解决此问题的一些示例代码:

// Loads the JSON (assuming you provide it as a string).
JSONObject x = new JSONObject(...);
// Gets and stores a reference to the outer object.
JSONObject y = x.getJSONObject("CfgCampaign");
// Now you can access any of the nested fields as follows.
JSONObject z = y.getJSONObject("campaignGroups");

嗯,对。非常感谢。我想我学到了一些东西。我没有区分包含实际对象的JSON对象。
// Loads the JSON (assuming you provide it as a string).
JSONObject x = new JSONObject(...);
// Gets and stores a reference to the outer object.
JSONObject y = x.getJSONObject("CfgCampaign");
// Now you can access any of the nested fields as follows.
JSONObject z = y.getJSONObject("campaignGroups");