如何创建链接两个数组的 JsonNode?
How to create a JsonNode chaining two arrays?
我正在用 Jackson 构建一个复杂的 JSON 对象,我想构建代码以清楚地显示 JSON 结构,所以我尝试使用 JsonNode API 与链式 with
、put
和 set
方法。在所有这些链接的东西中的一个地方,我需要一个接一个地添加两个数组。这是一个简化的摘录:
com.fasterxml.jackson.databind.ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.set("array1", arrayNode1)
.set("array2", arrayNode1);
我想让它创建这个 JSON:
{
"data": {
"array1": [...],
"array2": [...]
}
}
第一个 set
没问题,因为它是在 ObjectNode
上调用的。问题是 returns JsonNode
,它没有 set
方法,所以第二个 set
调用导致编译错误。
如何链接设置两个数组?
它并没有真正提高可读性,但如果类路径上有 Guava,则可以执行以下操作:
ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.setAll(ImmutableMap.of(
"array1", arraynode1,
"array2", arraynode2));
setAll
returns 对象节点。
我正在用 Jackson 构建一个复杂的 JSON 对象,我想构建代码以清楚地显示 JSON 结构,所以我尝试使用 JsonNode API 与链式 with
、put
和 set
方法。在所有这些链接的东西中的一个地方,我需要一个接一个地添加两个数组。这是一个简化的摘录:
com.fasterxml.jackson.databind.ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.set("array1", arrayNode1)
.set("array2", arrayNode1);
我想让它创建这个 JSON:
{
"data": {
"array1": [...],
"array2": [...]
}
}
第一个 set
没问题,因为它是在 ObjectNode
上调用的。问题是 returns JsonNode
,它没有 set
方法,所以第二个 set
调用导致编译错误。
如何链接设置两个数组?
它并没有真正提高可读性,但如果类路径上有 Guava,则可以执行以下操作:
ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.setAll(ImmutableMap.of(
"array1", arraynode1,
"array2", arraynode2));
setAll
returns 对象节点。