I would like to map my nullable String and Boolean from REST to Non-Nullable
My Adapters:
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
I'm attaching them like
return Moshi.Builder()
.add(NullToFalseAdapter)
.add(NullToEmptyStringAdapter)
NullToEmptyStringAdapter works like expected, but for NullToFalseAdapter I'm getting Caused by: java.lang.IllegalArgumentException: No JsonAdapter for boolean annotated [@xx.xx.xx.network.adapters.NullToFalse()]
Any idea?