java - 使用 GSON 序列化/反序列化 json/对象时的默认值

标签 java serialization gson deserialization json-deserialization

我正在使用 GSON 为我的一个应用程序序列化和反序列化 JSON/JAva 对象。我使用 SerializeNulls 因为我的一些值需要作为 null 发送到 Web 服务,而有些值我不想为 NULL。因此,我在不需要 null 的 setter/getter 中尝试过检查该值是否为 null,如果它为 null,则为其设置“”空白。但当我使用 gson.toJson() 方法将对象反序列化为 json 时,它仍然为我提供了 null 值。

private String mID;

public void setId(final String id) {
    if(id == null) {
        id = "";
    }
    mID = id;
}

public String getId() {
    if(mID == null) {
        mID = "";
    }
    return mID;
}

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

知道如何避免某些字段为 null 并使用 setter/getter 方法或其他方式设置空白“”。

最佳答案

您可以使用mID的默认值和适当的setter方法来做到这一点

示例代码:

class MyId{
    private String mID="";

    public void setId(final String id) {
        if(id != null) {
            mID = id;
        }
    }

    public String getId() {
        return mID;
    }
}

...
//JSON string to Object
MyId myId=new Gson().fromJson("{}", MyId.class);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(myId));

...
// Object to JSON string
MyId myId = new MyId();
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(myId));

输出:

{
   "mID": ""
}

关于java - 使用 GSON 序列化/反序列化 json/对象时的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279068/

相关文章:

java - 当我有一个黑匣子要转换为字节数组或从字节数组转换时,如何在 Java 中进行序列化和反序列化?

java - 使用 gson 错误转换 json 预期为 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY

java - GSON:反序列化通用对象

java - 为什么 View 的坐标始终为零

java - 创建名称为 'musicDao' : Injection of autowired dependencies failed 的 bean 时出错

database - 什么是快速执行和低 CPU - 从表中的数据库(存储为二进制)读取非规范化数据或从二进制文件读取相同数据?

c# - 从基类派生的类的 XmlSerializer 构造函数错误

java - JsonParseException : Fail to Deserializer JSON

java - Java 中的通用观察者模式

java - 为什么这个 while 循环条件为 true