Я хотел бы сопоставить мои обнуляемые строки и логические значения от REST до не обнуляемых
Мои адаптеры:
object NullToEmptyStringAdapter: JsonAdapter<String>() {
@FromJson
@NullToEmptyString
override fun fromJson(reader: JsonReader): String {
if (reader.peek() != JsonReader.Token.NULL) {
return reader.nextString()
}
reader.nextNull<Unit>()
return ""
}
@ToJson
override fun toJson(writer: JsonWriter, @NullToEmptyString value: String?) {
writer?.value(value)
}
}
@Retention(AnnotationRetention.RUNTIME)
@JsonQualifier
annotation class NullToEmptyString
object NullToFalseAdapter: JsonAdapter<Boolean>() {
@FromJson
@NullToFalse
override fun fromJson(reader: JsonReader): Boolean {
if (reader.peek() != JsonReader.Token.NULL) {
return reader.nextBoolean()
}
reader.nextNull<Unit>()
return false
}
@ToJson
override fun toJson(writer: JsonWriter, @NullToFalse value: Boolean?) {
writer?.value(value)
}
}
@Retention(AnnotationRetention.RUNTIME)
@JsonQualifier
annotation class NullToFalse
Я присоединяю их как
return Moshi.Builder()
.add(NullToFalseAdapter)
.add(NullToEmptyStringAdapter)
NullToEmptyStringAdapter
работает как ожидалось, но для NullToFalseAdapter
я получаю Caused by: java.lang.IllegalArgumentException: No JsonAdapter for boolean annotated [@xx.xx.xx.network.adapters.NullToFalse()]
Есть идеи?