【发布时间】:2020-04-16 17:37:42
【问题描述】:
我有一个 gson 模型类,其中包含一个名为 duration 的变量,它是一个整数。问题是当这个变量没有值时,服务器没有返回null,而是返回""。
列表也是如此,当我期待List<String>? 并且其中没有任何价值时,我得到"" 而不是null。不幸的是,服务器无法更改。
我已经用自定义double 解串器解决了这个问题,但我需要更通用的东西,因为“”是默认的服务器方法。这是我到目前为止的进展,但在 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)
}
}
}
【问题讨论】: