首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用DEFAULT_SERIALIZE_NULLS值时不会跳过Retro菲特2/ Gson空值。

当使用DEFAULT_SERIALIZE_NULLS值时不会跳过Retro菲特2/ Gson空值。
EN

Stack Overflow用户
提问于 2020-01-28 13:56:01
回答 1查看 1.3K关注 0票数 5

我遇到了一些未知的错误。这打破了我关于Kotlin数据类和Api响应为空安全的假设。

比方说,我有一个数据类--比如Person

代码语言:javascript
复制
 data class Person(val name: String) {
    constructor() : this("")
}

这将生成一个具有默认值(即非空)的对象人。早些时候,当我使用带有GsonConverterFactory.create()的默认改造客户机时(添加为转换器工厂)。在默认模式下,Gson不序列化空值。但是今天我发现这个字段被序列化为null。

我在ReflectiveTypeAdapterFactory https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java#L206中也是如此

在这里,实例值具有非空字段,但是在读取每个字段(field.read(in, instance);)后,它将赋值为空值。我期望在序列化期间跳过空值,还是反序列化?

编辑:看起来它正在反序列化空值,而不是序列化空问题。参考资料:https://github.com/google/gson/issues/1148

如果有任何细节遗漏或造成混乱,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2020-02-01 14:18:42

您必须通过更改类型使name参数为空;

代码语言:javascript
复制
String

代码语言:javascript
复制
String?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59950397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档