使用GSON序列化/反序列化json / object时的默认值

时间:2014-08-13 06:02:16

标签: java serialization gson deserialization json-deserialization

我正在使用GSON为我的一个应用程序序列化和反序列化JSON / JAva对象。我正在使用serializeNulls,因为我的一些值需要作为null发送到Web服务,而有些我不想成为NULL。所以我在我的setter / getter中尝试了我不需要null,我检查该值是否为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();

任何想法如何避免某些字段为空,并使用setter / getter方法或其他方式设置空白。

1 个答案:

答案 0 :(得分:0)

您可以使用默认值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": ""
}