gson: рассматривать null как пустую строку

Я использую google-gson для сериализации карты Java в строку JSON. Он предоставляет построитель обрабатывает нулевые значения :

Gson gson = new GsonBuilder().serializeNulls().create();

Проблема в том, что результатом является строка null , например:

gson.toJson(categoriesMap));
{"111111111":null}

И требуемый результат:

{"111111111":""}

I может выполнить замену строки для null и "" , но это некрасиво и подвержено ошибкам. Есть ли встроенная поддержка gson для добавления настраиваемой строки вместо null ?

30
задан Adam Matan 28 February 2012 в 14:04
поделиться

1 ответ

Если Вы хотите использовать этот подход с полем.

Просто создают NullStringToEmptyTypeAdapter

class NullStringToEmptyTypeAdapter : TypeAdapter<String>() {

    override fun read(reader: JsonReader): String {
        if (reader.peek() === JsonToken.NULL) {
            reader.nextNull()
            return ""
        }
        return reader.nextString()
    }

    override fun write(writer: JsonWriter, value: String?) {
        if (value == null) {
            writer.nullValue()
            return
        }
        writer.value(value)
    }
}

и затем добавляют @JsonAdapter аннотация к Вашему полю

@JsonAdapter(NullStringToEmptyTypeAdapter::class)
val yourField: String
0
ответ дан 11 October 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: