我正在使用 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/