使用 Jackson 将对象从 ArrayNode 提取到 ObjectNode
Extract objects from ArrayNode to ObjectNode with Jackson
我似乎无法在任何地方找到解决这个问题的方法,想知道它是否可以实现。
我的输入如下:
{
"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;
}
问号是我看不懂的地方,上面说的怎么获取字段名我看不懂,下面是循环debug的截图,信息是有的但是我可以似乎想出如何打开它。
您需要将每个项目的所有属性添加到 result
ObjectNode
:
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;
}
我似乎无法在任何地方找到解决这个问题的方法,想知道它是否可以实现。
我的输入如下:
{
"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;
}
问号是我看不懂的地方,上面说的怎么获取字段名我看不懂,下面是循环debug的截图,信息是有的但是我可以似乎想出如何打开它。
您需要将每个项目的所有属性添加到 result
ObjectNode
:
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;
}