gpt4 book ai didi

android - 使用 DEFAULT_SERIALIZE_NULLS 值时不会跳过 Retrofit2/Gson 空值

转载 作者:行者123 更新时间:2023-12-02 04:20:47 25 4
gpt4 key购买 nike

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

说,我有一个数据类说 Person :

 data class Person(val name: String) {
constructor() : this("")
}

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

我在 ReflectiveTypeAdapterFactory 中验证相同 https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java#L206

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

编辑:
看起来它是反序列化空值而不是序列化空值问题。
引用: https://github.com/google/gson/issues/1148

让我知道是否有任何细节遗漏或造成困惑。

最佳答案

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

String


String?

关于android - 使用 DEFAULT_SERIALIZE_NULLS 值时不会跳过 Retrofit2/Gson 空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59950397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com