gpt4 book ai didi

android - GSON:在不使用全局 serializeNulls() 的情况下序列化单个空字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:49 24 4
gpt4 key购买 nike

我将 Gson 与 Retrofit 一起使用,我遇到了一个需要序列化单个空字段的情况,但我无法为 Gson 打开全局 serializeNulls() 标志,因为它会破坏我的其余代码。有谁知道如何做到这一点?

这是我尝试过的:

  • 做一个注解,@SerializeNull。这将是理想的解决方案,但它失败了,因为 serializeNulls 标志实际上位于 JsonWriter 上,它位于 ExclusionStrategy 的下游。
  • 使用 TypeAdapterFactory。同样,JsonWriter 位于下游。

我也想不出添加到序列化 json 的方法,因为这一切都发生在 Retrofit 中。

最佳答案

我通过设置 setSerializeNulls(true) 并将原始值恢复到 TypeAdapter.write() 中的 JsonWriter 解决了这个问题:

public class NullableDoubleAdapter extends TypeAdapter<NullableDouble> {

@Override
public void write(final JsonWriter out, final NullableDouble value) throws IOException {
if (value == null) {
boolean serializeNulls = out.getSerializeNulls();
out.setSerializeNulls(true);
out.nullValue();
out.setSerializeNulls(serializeNulls);
} else {
out.value(value.getValue());
}
}
...

关于android - GSON:在不使用全局 serializeNulls() 的情况下序列化单个空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006132/

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