Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建链接两个数组的JsonNode?_Java_Json_Jackson_Method Chaining - Fatal编程技术网

Java 如何创建链接两个数组的JsonNode?

Java 如何创建链接两个数组的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

我正在用Jackson构建一个复杂的JSON对象,我想构造代码以清晰地显示JSON结构,因此我尝试使用JsonNode API和chained
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,因此会中断链接,但如果不中断向后兼容性,则无法直接“修复”此行为: