Moshi/Kotlin - How to serialize NULL JSON strings into empty strings instead?
我正在尝试编写一个可将此JSON
我编写了一个自定义适配器来尝试处理此问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class NullStringAdapter: JsonAdapter<String>() { @FromJson override fun fromJson(reader: JsonReader?): String { if (reader == null) { return"" } return if (reader.peek() == NULL)"" else reader.nextString() } @ToJson override fun toJson(writer: JsonWriter?, value: String?) { writer?.value(value) } } |
...试图解决此解析错误:
Moshi解析代码:
1 2 3 4 5 6 7 8 | val json ="{"nullString": null}" val moshi = Moshi.Builder() .add(KotlinJsonAdapterFactory()) .add(NullStringAdapter()) .build() val result = moshi.adapter(Model::class.java).fromJson(configStr) |
我在这里想念什么?还是moshi的新手,所以我们感谢您的帮助!
直接的问题是缺少
您还可以在此处执行其他几项清理操作。
使用
而且,JsonReader和JsonWriter不能为空。
1 2 3 4 5 6 7 8 9 | object NULL_TO_EMPTY_STRING_ADAPTER { @FromJson fun fromJson(reader: JsonReader): String { if (reader.peek() != JsonReader.Token.NULL) { return reader.nextString() } reader.nextNull<Unit>() return"" } } |
并使用添加适配器:
1 2 3 4 | val moshi = Moshi.Builder() .add(NULL_TO_EMPTY_STRING_ADAPTER) .add(KotlinJsonAdapterFactory()) .build() |