如果值不存在,则忽略 moshi 中的 属性
Ignore a property in moshi if the value is not present
我的数据中有以下 属性 class
@Parcelize
@JsonClass(generateAdapter = true)
data class CatalogProduct(
@Json(name = "recommended")
val recommended: Int = 0
) : Parcelable
我收到以下错误:
Expected an int but was BOOLEAN at path $.products[0].recommended at $.products[0].recommended
由于我从 API 返回的响应可能不包含该值作为其可选值。
如果值不存在,下面不会显示错误。
@Transient
@Json(name = "recommended")
val recommended: Int = 0
但是,如果响应包含该值,那么它将始终被排除
如果我像这样使 属性 可以为 null,那么错误将再次显示:
@Json(name = "recommended")
val recommended: Int? = 0
我如何推荐才能在响应中没有值时被忽略,而在有值时不被忽略?
我正在使用以下依赖项和版本
moshiVersion = '1.11.0'
implementation "com.squareup.moshi:moshi:$moshiVersion"
implementation 'com.serjltt.moshi:moshi-lazy-adapters:2.2'
kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshiVersion"
implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
Ignore a property in moshi if the value is not present
一般来说,我只用val propertyName: Type?
,在我的项目中效果很好。
@Json(name = "email") val email: String,
@Json(name = "userName") val userName: String?,
@Json(name = "isSignup") val isSignup: Boolean?,
...
关于你的描述,为什么不使用Boolean?
,因为我检查了错误:
Expected an int but was BOOLEAN at path $.products[0].recommended at $.products[0].recommended
如果我没理解错的话,就是类型不匹配。服务器 return Boolean
但是你在数据中使用 Int
class.
这个怎么样?
@Json(name = "recommended") val recommended: Boolean?
我的数据中有以下 属性 class
@Parcelize
@JsonClass(generateAdapter = true)
data class CatalogProduct(
@Json(name = "recommended")
val recommended: Int = 0
) : Parcelable
我收到以下错误:
Expected an int but was BOOLEAN at path $.products[0].recommended at $.products[0].recommended
由于我从 API 返回的响应可能不包含该值作为其可选值。
如果值不存在,下面不会显示错误。
@Transient
@Json(name = "recommended")
val recommended: Int = 0
但是,如果响应包含该值,那么它将始终被排除
如果我像这样使 属性 可以为 null,那么错误将再次显示:
@Json(name = "recommended")
val recommended: Int? = 0
我如何推荐才能在响应中没有值时被忽略,而在有值时不被忽略?
我正在使用以下依赖项和版本
moshiVersion = '1.11.0'
implementation "com.squareup.moshi:moshi:$moshiVersion"
implementation 'com.serjltt.moshi:moshi-lazy-adapters:2.2'
kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshiVersion"
implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
Ignore a property in moshi if the value is not present
一般来说,我只用val propertyName: Type?
,在我的项目中效果很好。
@Json(name = "email") val email: String,
@Json(name = "userName") val userName: String?,
@Json(name = "isSignup") val isSignup: Boolean?,
...
关于你的描述,为什么不使用Boolean?
,因为我检查了错误:
Expected an int but was BOOLEAN at path $.products[0].recommended at $.products[0].recommended
如果我没理解错的话,就是类型不匹配。服务器 return Boolean
但是你在数据中使用 Int
class.
这个怎么样?
@Json(name = "recommended") val recommended: Boolean?