Kil*_*ler 5 android json gson kotlin retrofit2
我遇到了一些未知错误。这打破了我对 Kotlin 数据类和 Api 响应的空安全假设。
说,我有一个数据类说Person:
data class Person(val name: String) {
constructor() : this("")
}
Run Code Online (Sandbox Code Playgroud)
这将生成一个具有默认名称值(即非空)的对象 Person。早些时候,当我使用默认改造客户端时GsonConverterFactory.create()(添加为转换器工厂)。在默认模式下,Gson 不会序列化空值。但是今天我发现该字段被序列化为 null。
我在https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java#L206 中验证相同ReflectiveTypeAdapterFactory
这里的实例值具有非空字段,但在读取每个字段 ( field.read(in, instance);) 后,它分配了空值。我期望在序列化过程中跳过空值还是反序列化?
编辑:看起来它是反序列化空值而不是序列化空值问题。参考:https : //github.com/google/gson/issues/1148
如果缺少任何细节或造成混淆,请告诉我。
您必须通过更改类型使名称参数可以为空;
String
Run Code Online (Sandbox Code Playgroud)
到
String?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |