java - 如何合并两个 JsonArray?
问题描述
我为同一个问题找到的所有答案都涉及org.json.JSONArray
. 我需要javax.json.JsonArray的解决方案。
我有两个 JSON 数组,当我尝试将它们与我合并时,array1.addAll(array2)
我得到一个java.lang.UnsupportedOperationException
.
...
JsonObject users = getUsers(searchBase, filter, (String[]) null);
...
final JsonObject guests = getUsers(searchBase, filter, (String[]) null);
users.getJsonArray("Resources").addAll(guests.getJsonArray("Resources"));
...
JsonObjects
我回来的(用户和客人)都有这种形式:
{
"startIndex": 1,
"totalResults": 7,
"itemsPerPage": 7,
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"Resources": [
{
"attr1": "value1",
"attr2": "value2",
"attr3": "value3",
"attr4": "value4",
},
{
"attr1": "value5",
"attr2": "value6",
"attr3": "value7",
"attr4": "value8",
},
...
]
}
为什么我会收到此错误?
那我该怎么做才能合并它们呢?
编辑:正确答案是 tonakai 之一。不幸的是,这是一条评论,我无法将其设置为已接受的答案。
解决方案
我猜你正在寻找JsonArrayBuilder
.
以下代码对我有用:
import java.io.*;
import javax.json.*;
public class Test {
public static void main(String[] args) throws FileNotFoundException, IOException {
InputStream fileInputStream = new FileInputStream("ABSOLUTE_PATH_TO_FILE\\jsonData.json");
JsonReader jsonReader = Json.createReader(fileInputStream);
JsonObject jsonObject = jsonReader.readObject();
JsonArrayBuilder users = Json.createArrayBuilder(jsonObject.getJsonArray("Resources"));
JsonArrayBuilder guests = Json.createArrayBuilder(jsonObject.getJsonArray("Resources"));
users.addAll(guests);
System.out.println(users.build());
jsonReader.close();
fileInputStream.close();
}
}
我在这里使用的文件是根据您在问题中提供的 JSON 创建的:
{
"startIndex":1,
"totalResults":7,
"itemsPerPage":7,
"schemas":[
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"Resources":[
{
"attr1":"value1",
"attr2":"value2",
"attr3":"value3",
"attr4":"value4"
},
{
"attr1":"value5",
"attr2":"value6",
"attr3":"value7",
"attr4":"value8"
}
]
}
推荐阅读
- xslt - 平面数据库记录到父子 XML 转换
- windows - Get-AD 计算机与文本文件内容不匹配
- mysql - 如何在 MySQL 上将 TLS 版本升级到 1.2
- javascript - 有没有办法缩短定义 v-model 数据、Vue.js 和 Laravel
- mongodb - mongodb $lookup 返回空数组
- android - 如何从使用身份验证的 URL 打开 PDF?
- javascript - 如何改变输出的结构
- ios - UITabBar 项目标题
- symfony - Symfony 4 - 密码保存在 argon2i 而不是 bcrypt 仅在 prod 服务器上
- python - 在 IBM 量子体验 (Tensorflow) 中使用第三方模块