Java 如何创建链接两个数组的JsonNode?
我正在用Jackson构建一个复杂的JSON对象,我想构造代码以清晰地显示JSON结构,因此我尝试使用JsonNode API和chainedJava 如何创建链接两个数组的JsonNode?,java,json,jackson,method-chaining,Java,Json,Jackson,Method Chaining,我正在用Jackson构建一个复杂的JSON对象,我想构造代码以清晰地显示JSON结构,因此我尝试使用JsonNode API和chainedwith、put和set方法。在所有链接的东西中的一个地方,我需要一个接一个地添加两个数组。以下是一个简化的摘录: com.fasterxml.jackson.databind.ObjectNode json = new ObjectNode(JsonNodeFactory.instance); json.with("data") .set("ar
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
上调用的。问题是它返回JsonNode
,它没有set
方法,因此第二个set
调用导致编译错误
如何将设置两个数组链接起来?这并不能真正提高可读性,但如果类路径上有番石榴,则可以执行以下操作:
ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.setAll(ImmutableMap.of(
"array1", arraynode1,
"array2", arraynode2));
setAll
返回对象节点。这并不能真正提高可读性,但如果类路径上有番石榴,则可以执行以下操作:
ObjectNode json = new ObjectNode(JsonNodeFactory.instance);
json.with("data")
.setAll(ImmutableMap.of(
"array1", arraynode1,
"array2", arraynode2));
setAll
返回对象节点。是的,我想这是一种方法,谢谢。虽然我想知道Jackson为什么会这样限制JsonNode的API。这是API中的一个缺陷,它返回一个JsonNode而不是ObjectNode,因此会破坏链接,但如果不破坏向后兼容性,这种行为就无法直接“修复”:是的,我想这是一种方法,谢谢。虽然我想知道Jackson为什么会这样限制JsonNode的API。这是API中的一个缺陷,它返回一个JsonNode而不是ObjectNode,因此会中断链接,但如果不中断向后兼容性,则无法直接“修复”此行为: