@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;
}
  • Вопрос задан
  • 596 просмотров
Пригласить эксперта
Ответы на вопрос 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
По-моему логично, что если Вы хотите получить объект произвольной структуры, там Вам нужно реализовать руками конечное преобразование.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы