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

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

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽