Как Моши применяет значение по умолчанию kotlin к нулевому полю json - PullRequest
1 голос
/ 08 апреля 2019

Json

{
    "id": "1",
    "name": "name",
    "email": null
}

Пользователь

data class User(
    var id: Int = 0,
    var name: String = "",
    var email: String = ""
)

Я хочу применить значение по умолчанию для нулевого значения при разборе JSON.(Примените указанное выше поле электронной почты как ненулевое "" (пусто))

1 Ответ

2 голосов
/ 08 апреля 2019

Сведения: https://code.luasoftware.com/tutorials/android/android-moshi-adapter-convert-null-to-empty-string/

TL; DR;

Создать NullToEmptyStringAdapter.

@Retention(AnnotationRetention.RUNTIME)
@JsonQualifier
annotation class NullToEmptyString

class NullToEmptyStringAdapter {
    @ToJson
    fun toJson(@NullToEmptyString value: String?): String? {
        return value
    }

    @FromJson
    @NullToEmptyString
    fun fromJson(@Nullable data: String?): String? {
        return data ?: ""
    }
}

Apply NullToEmptyStringAdapterк вашему классу данных.

data class User(
    var id: Int = 0,
    var name: String = "",
    @NullToEmptyString
    var email: String = ""
)

Настройка Moshi

val moshi = Moshi.Builder()
    .add(NullToEmptyStringAdapter())
    .add(KotlinJsonAdapterFactory())
    .build()
...