Нет JsonAdapter для Моши - PullRequest
       12

Нет JsonAdapter для Моши

0 голосов
/ 09 апреля 2020

Я хотел бы сопоставить мои обнуляемые строки и логические значения от 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()]

Есть идеи?

...