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

How to create a JsonNode chaining two arrays?

我正在用 Jackson 构建一个复杂的 JSON 对象,我想构建代码以清楚地显示 JSON 结构,所以我尝试使用 JsonNode API 与链式 withputset 方法。在所有这些链接的东西中的一个地方,我需要一个接一个地添加两个数组。这是一个简化的摘录:

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 对象节点。