Gson получает неиспользуемые данные в классе Java POJO

avatar
Xeno Pyax
8 августа 2021 в 23:49
59
1
0

Я разрабатываю API, который считывает данные, созданные другой программой. Данные находятся в формате json, и я хочу использовать Gson для чтения этих данных json в объект json, а также сообщать о любых неиспользуемых данных, которые не были указаны в классе. Например, у меня есть этот json:

{"Event": "ChatMessageSent", "Message": "This is a test message!", "Time":1628466226}

Теперь класс имеет только строку события и строку сообщения, поэтому он будет хранить только эти данные. Мой вопрос заключается в том, как я могу настроить свой класс POJO или заставить Gson также возвращать данные о времени в специальном методе, который возвращает все неиспользуемые данные, поэтому его можно отправить в журнал отладки для выдачи предупреждения о неиспользуемых данных. Поскольку данные могут измениться в любой версии, мне нужно создать систему ведения журнала, которая сообщает мне, пропустил ли API некоторые данные.

Любые подсказки приветствуются, заранее спасибо!

Источник
chrylis -cautiouslyoptimistic-
9 августа 2021 в 01:17
0

Я не знаю, как это сделать в Gson, но в Джексоне вы должны либо использовать @JsonAnySetter (для сбора неизвестных свойств), либо использовать @JsonIgnoreProperties (для создания исключения). Вы можете увидеть, есть ли у Gson эквивалент.

Xeno Pyax
9 августа 2021 в 01:49
0

Я посмотрел на это, и похоже, что переход на Джексона был бы лучшим способом и делает именно то, что мне нужно, я попробую это и сообщу, если это решение, с которым я иду.

chrylis -cautiouslyoptimistic-
9 августа 2021 в 01:51
0

Ваше описание звучит как серверное приложение, но обратите внимание, что если вы пишете для Android, Gson имеет существенную оптимизацию для ограничений этой платформы и используется по умолчанию.

Xeno Pyax
9 августа 2021 в 11:58
0

В настоящее время я не планирую использовать это на андроиде, но я отмечу это, если решу использовать андроид и Gson в будущем, спасибо за совет!

Ответы (1)

avatar
Chabo
9 августа 2021 в 00:10
-1

Как насчет создания пользовательского десериализатора Gson для нужных вам полей. Вы можете посмотреть в TypeAdaptor.

Xeno Pyax
9 августа 2021 в 01:36
0

Не могли бы вы уточнить, как это может помочь мне отфильтровать неиспользуемые данные/неизвестные свойства?