Tag: 反序列化

使用Gson和Kotlin进行无漏网络响应

假设你有这样的数据类pojo,它表示典型的基于gson的响应表示来自服务器。 data class User( @field:SerializedName(“id”) val id: String, @field:SerializedName(“name”) val name: String, @field:SerializedName(“user_phone”) val phone: String?) ID和名称字段是必需的, 电话字段是可选的 所以这个模型所期望的适当的json,例如: { “id”: “someHash”, “name”: “John Snow” } 有时服务器可以发送json,如: { “id”: “someHash” } 不幸的是,这样的json解析成功没有任何错误,因为gson使用不安全的reflection ,并为Java编写。 所以作为结果将有损坏kotlin模型与空值存储在非空字段 我想在json反序列化层上为这个模型提供validation,因为最好是在那里接收一个错误,而不是在应用程序的任何其他部分,这个部分需要非空字段。 我正在寻找这个问题的任何consize解决方案。 当然,你可以为每个模型提供一些明确的validationfunction fun User.validate() { if (id == null) throw JsonParseException(“‘id’ is null!”) if (name == null) throw JsonParseException(“‘name’ is […]

Jackson @JsonProperty注释用于kotlin数据类的使用

kotlin 1.2.10 jackson-module-kotlin:2.9.0 我在kotlin中有以下数据类: data class CurrencyInfo( @JsonProperty(“currency_info”) var currencyInfo: CurrencyInfoItem? ) @JsonInclude(JsonInclude.Include.NON_NULL) data class CurrencyInfoItem( @JsonProperty(“iso_4217”) var iso4217: String?, @JsonProperty(“name”) var name: String?, @JsonProperty(“name_major”) var nameMajor: String?, @JsonProperty(“name_minor”) var nameMinor: String?, @JsonProperty(“i_ma_currency”) var iMaCurrency: Int?, @JsonProperty(“i_merchant_account”) var iMerchantAccount: Int?, @JsonProperty(“i_x_rate_source”) var iXRateSource: Int?, @JsonProperty(“base_units”) var baseUnits: Double?, @JsonProperty(“min_allowed_payment”) var minAllowedPayment: Int?, @JsonProperty(“decimal_digits”) var decimalDigits: […]