У меня есть класс модели gson, который содержит переменную с именем duration
, которая является целым числом. Проблема в том, что когда эта переменная не имеет значения, сервер вместо того, чтобы возвращать мне null
, возвращает ""
.
Это также относится и к спискам, когда я ожидаю List<String>?
и в них нет значения, я получаю ""
вместо null
. К сожалению, сервер не может измениться.
Я исправил проблему с пользовательским десериализатором double
, но мне нужно что-то более обобщенное c, потому что "" - это серверный подход по умолчанию. Вот мой прогресс, но в ветке else я не знаю, как заставить его продолжать работу с десериализатором по умолчанию.
internal class BadDeserializer : JsonDeserializer<Any> {
@Throws(JsonParseException::class)
override fun deserialize(
json: JsonElement,
type: Type,
context: JsonDeserializationContext): Any? {
return try {
val json = json.asString
if (json.isBlank()) {
null
} else {
//Do nothing and call default behavior (?)
}
} catch (e: Exception) {
throw JsonParseException(e)
}
}
}