#java #jackson
#java #джексон
Вопрос:
Кажется, я нигде не могу найти решение этой проблемы, задаваясь вопросом, достижимо ли это.
Мой ввод выглядит следующим образом:
{
"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 resu<
}
Вопросительные знаки — это то, где я в замешательстве, кажется, я не могу понять, как получить имена полей, как я сказал выше, ниже приведен скриншот отладки в цикле, информация есть, но я не могу понять, как ее развернуть.
Ответ №1:
Вам нужно добавить все свойства из каждого элемента в 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 resu<
}