Gson игнорирует неизвестное значение enum - PullRequest
3 голосов
/ 06 августа 2011

Есть ли способ настроить gson на игнорирование неизвестного значения enum? За Пример

в моем клиентском коде есть перечисление DeviceType имеет 2 значения перечисления: ПК, MOBILE

Но когда серверу отправляется другой тип, например MAC, как другой Тип устройства. Как я могу настроить мой десерализатор GSON, чтобы установить DeviceType = null вместо исключения?

Спасибо

Шон

Ответы [ 2 ]

2 голосов
/ 08 октября 2011

Вы можете легко написать пользовательский JsonDeserializer, который игнорирует неизвестные значения.Подробнее здесь .Для начала взгляните на исходный код gson, класс com.google.gson.DefaultTypeAdapters.EnumTypeAdapter

0 голосов
/ 15 апреля 2017

Я не уверен на 100%, сработает ли это, но вы можете объявить метод static T valueOf(String) в своем перечислении, чтобы переопределить реализацию по умолчанию на метод, который возвращает нулевое значение для неизвестных значений вместо IllegalArgumentException.

Документация предполагает, что будет использоваться переопределенная статическая реализация.

Тогда это зависит только от того, как Gson обработает результаты этого метода (при условии, что Gson даже использует этот метод для синтаксического анализа), ноэто простой обходной путь, который может стоить того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...