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;
}