gpt4 book ai didi

java - 为什么这个空值没有被序列化?

转载 作者:行者123 更新时间:2023-11-29 09:32:38 26 4
gpt4 key购买 nike

所以我有一个我们正在序列化为 gson 的对象,end 值为 null。但不是在 json 对象中显示为 nullend 的整个键值对只是从 json 对象中丢失。

这是对象的 POJO。

public static class History {
@NonNull
public final String areaId;
@NonNull
public final String userId;
public final long start;
@Nullable
public final Long end;
public History(@NonNull String areaId, @NonNull String userId, long start, @Nullable Long end) {
this.areaId = areaId;
this.userId = userId;
this.start = start;
this.end = end;
}
}

这是 gson 构建器

GsonBuilder()
.serializeNulls()
.registerTypeAdapter(Date.class, new DateFormatter())
.setFieldNamingStrategy(fieldNamingStrategy)
.create();

这就是 json 的实际样子

areaUserHistories": {
"aff824c6-df4f-49b4-8dea-6c204cb7bb16": {
"areaId": "ca5f5e6f-77eb-4859-a2ad-c3b249e53493",
"start": 1524178713,
"userId": "911705136"
}
}

应该是这样的

areaUserHistories": {
"aff824c6-df4f-49b4-8dea-6c204cb7bb16": {
"areaId": "ca5f5e6f-77eb-4859-a2ad-c3b249e53493",
"start": 1524178713,
"end": null
"userId": "911705136"
}
},

EIDT 1

所以我正在试验,我将这行代码添加到 GsonBuilder,.setLongSerializationPolicy(LongSerializationPolicy.STRING)

这样 Gson Builder 现在将 Long 值转换为 String。这导致正确添加了 end=null 值。不幸的是,该值需要是一个 Long。

最佳答案

GsonBuilder gsonBuilder = new GsonBuilder();

gsonBuilder.serializeNulls();

Gson gson = gsonBuilder.create();

String jsonString = gson.toJson(object);

关于java - 为什么这个空值没有被序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49948851/

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