com.squreup.moshi.JsonDataException:路径$.data.gender处应为字符串,但为



我需要解析来自服务器请求的数据类,如下所示:

@JsonClass(generateAdapter = true)
data class User(
@Json(name = "user_name")
val userName: String,
@Json(name = "gender")
val gender: Gender?,
) {
enum class Gender {
@Json(name = "male")
MALE,
@Json(name = "female")
FEMALE,
}
}

我从服务器上得到了这个json:

{
"data":{
"user_name":"MyUserName",
"gender":null
}
}

但是我有这个错误com.squreup.moshi.JsonDataException: Expected a string but was NULL at path $.data.gender

有没有一种方法可以在不更改服务器api的情况下解决这个问题?

UPD:问题出现在EnumJsonAdapter中,回退未知:

Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.add(
User.Gender::class.java,
EnumJsonAdapter.create(User.Gender::class.java)
.withUnknownFallback(null)
)
.build()

解决方案:将nullSafe((添加到适配器

Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.add(
User.Gender::class.java,
EnumJsonAdapter.create(User.Gender::class.java)
.withUnknownFallback(null)
.nullSafe()
)
.build()

相关内容

最新更新