我需要从服务器请求中解析数据类,如下所示:
@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:需要一个字符串,但在路径 $.data.gender 处为 NULL
有没有办法在不更改服务器 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()
关于android - com.squreup.moshi.JsonDataException : Expected a string but was NULL at path $. 数据.性别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71485872/