【发布时间】:2021-09-04 09:08:32
【问题描述】:
我收到了这样的回复
[
{
"externalId1":"NULL",
"externalId2":"NULL"
}
,
{
"externalId1":"NULL",
"externalId2":"NULL"
}
]
并且此响应存储在List<String> 变量名response1 中。
我想提取 externalId1 和 externalId2 的值并将其存储在 List 中
我写的代码如下:
//response1是存放response数组的list,上面已经写好了response数组。
但是,在执行此操作后,异常来了,因为它不是 JSONObject。该循环不会提取所需的数据。理想情况下,externalId1 和 externalId2 这两个键的值都应该被打印出来。但是循环不断给出异常,因此说“NOT JSONObject”。
List<String> response1 = new ArrayList<String>();
JSONArray jsonArray = new JSONArray(response1);
for (int i=0; i<array.length(); i++)
{
JSONObject object = jsonArray.getJSONObject(i);
System.out.println(object.getString("externalId1");
System.out.println(object.getString("externalId2");
}
编辑:根据 stackoverflow 上少数用户的反馈,我修改了通过在我的机器中更改代码得到的响应。
【问题讨论】:
-
您的 JSON 示例中有一个 array of array。
-
在 JSON 中:
[ ]代表列表/数组,{ }代表对象。像[ [ { } ] ]这样的结构是包含包含对象的数组的数组。我不知道你从哪里得到List<String>... -
是的,响应来自数据库,我将累积响应存储在字符串列表中,现在我需要提取每个键的数据
-
只需添加额外的操作,先获取内部数组,然后提取其中的对象
-
感谢 Gael J,我现在已经修改了响应本身,现在它是一个包含对象的单个数组,并且存储在 List
类型中,然后我做了与描述中相同的代码但我无法提取信息
标签: java json spring-boot