Задать вопрос
@kidar2

Как парсить JSON с неопределёнными заранее полями?

Есть простой JSON с известными полями (A и B для примера, тип String) и каким-то количеством неизвестных (foo и bar и возможно какие-то еще, или без этих полей. Тип полей неизвестен).

[
    {"A": "Value for A", B: "Value for B", "foo": "foo"},
    {"A": "Value for A", B: "Value for B", "bar": 13},
    {"A": "Value for A", B: "Value for B", "foo": "foo", "val": true}
]

Сам json приходит извне и поменять его нельзя.

Мне нужно преобразовать этот JSON в простой объект (POJO). Jackson предоставляет возможность использовать JsonNode, но при этом потребляет очень много памяти, тем больше чем больше данных в JSON.
Есть ли какой-то способ это сделать, и получить в итоге экземпляр класса вроде такого?:
class Simple
{
    public String A;
    public String B;
    public HashMap<String, String> others;
}
  • Вопрос задан
  • 808 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
let str = `[
    {"A": "Value for A", B: "Value for B", "foo": "foo"},
    {"A": "Value for A", B: "Value for B", "bar": 13},
    {"A": "Value for A", B: "Value for B", "foo": "foo", "val": true}
]`;
let result = JSON.parse(str).map(item => {
  let others = { ...item };
  delete others.A;
  delete others.B;
  return {
    A: item.A,
    B: item.B,
    ...others
  };
});
Ответ написан
@kuftachev
По-моему логично, что если Вы хотите получить объект произвольной структуры, там Вам нужно реализовать руками конечное преобразование.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы