Java GSON-将空值反序列化为;空";串
我正面临着一种奇怪的行为。让我们以下面的例子为例:Java GSON-将空值反序列化为;空";串,java,string,null,gson,deserialization,Java,String,Null,Gson,Deserialization,我正面临着一种奇怪的行为。让我们以下面的例子为例: { "Name": "emaborsa", "Surname": null } 我的想法是: public class User { @SerializedName("Name") private String name; @SerializedName("Surname") private String surname; // getter and setter } 我使用以下
{
"Name": "emaborsa",
"Surname": null
}
我的想法是:
public class User {
@SerializedName("Name")
private String name;
@SerializedName("Surname")
private String surname;
// getter and setter
}
我使用以下代码对其进行反序列化:
Gson g = new Gson();
User user = g.fromJson(json, User.class);
变量name
被设置为“emaborsa”,变量姓氏
我希望它被设置为null,但是有一个字符串“null”。这是正确的行为还是我遗漏了什么?我试着用谷歌搜索它,但很难找到与
字符串和空相关的内容。看起来您必须指定要序列化空值
Gson Gson=new GsonBuilder()
.setPrettyPrinting()
.serializeNulls()
来自-看起来您必须指定要序列化空值
Gson Gson=new GsonBuilder()
.setPrettyPrinting()
.serializeNulls()
来自-使用您的代码作为基础,这对我来说很好:
package gsonexample3;
import com.google.gson.Gson;
import com.google.gson.annotations.*;
public class User {
public static void main(String[] args) {
Gson g = new Gson();
User user = g.fromJson(json, User.class);
}
@SerializedName("Name")
private String name;
@SerializedName("Surname")
private String surname;
private static String json = "{\"Name\": \"emaborsa\", \"Surname\": null}";
}
使用您的代码作为基础,这对我来说非常有效:
package gsonexample3;
import com.google.gson.Gson;
import com.google.gson.annotations.*;
public class User {
public static void main(String[] args) {
Gson g = new Gson();
User user = g.fromJson(json, User.class);
}
@SerializedName("Name")
private String name;
@SerializedName("Surname")
private String surname;
private static String json = "{\"Name\": \"emaborsa\", \"Surname\": null}";
}
我看不出那个问题。您确定您的json没有引用“null”吗?我复制了你的用户代码和反序列化代码。但是我在json中使用了一个字符串变量。您从哪里获得json?档案?变量?是的,你是对的,是我的错。我在代码中遗漏了一行,其中变量是串联在一起的,比如user.getnamame()+“”
,因此我发现字符串null
,我没有看到这个问题。您确定您的json没有引用“null”吗?我复制了你的用户代码和反序列化代码。但是我在json中使用了一个字符串变量。您从哪里获得json?档案?变量?是的,你是对的,是我的错。我在代码中遗漏了一行,其中变量是串联的,比如user.getnamame()+“”
,因此我找到了字符串null