Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 使用Jackson将对象从ArrayNode提取到ObjectNode_Java_Jackson - Fatal编程技术网

Java 使用Jackson将对象从ArrayNode提取到ObjectNode

Java 使用Jackson将对象从ArrayNode提取到ObjectNode,java,jackson,Java,Jackson,我似乎在任何地方都找不到解决这个问题的办法,我想知道这是否可行 我的输入如下: { "Table": { "Row": [ { "Order1": { "Date": "foo" } }, {

我似乎在任何地方都找不到解决这个问题的办法,我想知道这是否可行

我的输入如下:

{
    "Table": {
        "Row": [
            {
                "Order1": {
                    "Date": "foo"
                }
            },
            {
                "Order2": {
                    "Date": "foo"
                }
            },
            {
                "Order3": {
                    "Date": "foo"
                }
            }
        ]
    }
}
我试图实现的是:

{
    "Table": {
        "Order1": {
            "Date": "foo"
        },
        "Order2": {
            "Date": "foo"
        },
        "Order3": {
            "Date": "foo"
        }
    }
}
基本上,只需去掉包装对象的
ArrayNode

我尝试了以下方法,但不知道如何获取对象的字段名,即“Order1”、“Order2”等,以填充新的
ObjectNode

  protected ObjectNode arrayToObjects(ArrayNode input) {
    final ObjectNode result = JsonNodeFactory.instance.objectNode();

    input.forEach(node -> {
        result.set("???", ((ObjectNode) node).deepCopy());
    });

    return result;
  }
问号是我困惑的地方,我似乎不明白如何获得字段名,正如我上面所说的,下面是循环调试的屏幕截图,信息在那里,但我似乎不知道如何打开它


您需要将每个项目的所有属性添加到
结果
对象节点

protected static ObjectNode arrayToObjects(ArrayNode input) {
    final ObjectNode result = JsonNodeFactory.instance.objectNode();

    input.forEach(node -> node.fields().forEachRemaining(entry -> result.set(entry.getKey(), entry.getValue())));

    return result;
}