Я читаю такие темы, как Android GSON десериализует, удаляет пустые массивы , https://medium.com/@int02h/custom-deserialization-with-gson-1bab538c0bfa, Как вы получаете GSON для пропуска пустых или пустых объектов и пустых массивов и списков? .
Например, у меня есть класс:
data class ViewProfileResponse(
val success: Int,
val wallets: List<Wallet>?,
val contact: Contact?,
val code: Int,
val errors: ErrorsResponse?
) {
data class Contact(
val countryId: Int,
val regionId: Int,
val cityId: Int
)
data class Wallet(
val id: Int,
val currency: String?,
val createTime: Int,
val balance: Float,
val bonusWallet: BonusWallet?
) {
data class BonusWallet(val id: Int, val balance: Float)
}
data class ErrorsResponse(val common: List<String>?)
class Deserializer : ResponseDeserializable<ViewProfileResponse> {
override fun deserialize(content: String): ViewProfileResponse? =
Gson().fromJson(content, ViewProfileResponse::class.java)
}
}
Как видите, у меня есть сложный класс с подклассами, любой из которых может быть нулевым.Но вместо отправки null
или {}
в эти поля сервер отправляет []
в формате JSON.
Я имею в виду, вместо "contact": null
я получаю "contact": []
.
Как написать собственный десериализатор для Gson?Так что пустые массивы могут быть удалены, но другие типы сохраняются.У меня есть десятки таких классов.