gpt4 book ai didi

java - GSON : Treat Empty String as null

转载 作者:行者123 更新时间:2023-12-05 07:11:14 31 4
gpt4 key购买 nike

我正在使用 gson 将 java 对象序列化为 json。

Gson gson = new GsonBuilder().serializeNulls().create();

此构建器可以很好地处理空值。但与此同时,我希望它也将空字符串处理为 null。

如何做到这一点?

最佳答案

您需要 register a custom TypeAdapter包装现有的 String TypeAdapter 并将空字符串替换为 JSON null。

示例代码:

public static void main(String[] args) {
Gson gson = createGson();
System.out.println(gson.toJson(Arrays.asList("foo","bar","",null,"phleem")));
}

static Gson createGson() {
return new GsonBuilder().serializeNulls()
.registerTypeAdapter(String.class,
new EmptyToNullTypeAdapter())
.create();

}

static class EmptyToNullTypeAdapter extends TypeAdapter<String> {

@Override
public void write(final JsonWriter out, final String value) throws IOException {
if (value.isEmpty()) {
out.nullValue();
} else {
TypeAdapters.STRING.write(out, value);
}
}

@Override
public String read(final JsonReader in) throws IOException {
return TypeAdapters.STRING.read(in);
}

}

输出:

["foo","bar",null,null,"phleem"]

警告

最后:不确定这是个好主意,因为它是一个非对称解决方案,即当您反序列化一个对象,然后再次序列化它时,您的新对象将不等于原始对象(空值而不是空字符串).

关于java - GSON : Treat Empty String as null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856421/

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