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