У меня есть класс данных.строитель, но это не работает.
fun fromJson(json: String): User? {
val builder = Moshi.Builder()
.add(Title::class.java, EnumJsonAdapter.create<Title>(Title::class.java).withUnknownFallback(null))
.add(Gender::class.java, EnumJsonAdapter.create<Gender>(Gender::class.java).withUnknownFallback(Gender.UNSPECIFIED))
.build()
val jsonAdapter = builder.adapter(User::class.java)
return jsonAdapter.fromJson(json)
}
fun toJson(obj: User): String {
val builder = Moshi.Builder()
.add(Title::class.java, EnumJsonAdapter.create<Title>(Title::class.java).withUnknownFallback(null))
.add(Gender::class.java, EnumJsonAdapter.create<Gender>(Gender::class.java).withUnknownFallback(Gender.UNSPECIFIED))
.build()
val jsonAdapter = builder.adapter(User::class.java).serializeNulls()
return jsonAdapter.toJson(obj)
}
Я получаю title = "Mr", и он анализируется как ноль.По полу я получаю это исключение:
com.squareup.moshi.JsonDataException: Expected a string but was NUMBER at path $.data.gender
at com.squareup.moshi.adapters.EnumJsonAdapter.fromJson(EnumJsonAdapter.java:93)
Что-то не так с EnumJsonAdapter
?Итак, что я вижу, его нельзя использовать для int, но почему он не работает нормально для заголовка, который является строкой?
Если я использую пользовательские адаптеры для этих перечислений, все работает нормально.