【问题标题】:GSON - Deserialize null values into "null " stringsGSON - 将空值反序列化为“空”字符串
【发布时间】:2020-02-07 20:31:08
【问题描述】:

恕我直言,我正面临 GSON 的奇怪行为。举个例子:

{
    "Name": "emaborsa",
    "Surname": null
}

我的 POJO 是:

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”,变量surname 我希望它设置为null,但有一个字符串“null”代替。
这是正确的行为还是我错过了什么?我试图用谷歌搜索,但很难找到与Stringnull 相关的内容...

【问题讨论】:

  • 我没有看到这个问题。你确定你的json没有引用“null”吗?我复制了您的用户代码和反序列化代码。但是我为我的 json 使用了一个字符串变量。你从哪里得到你的json?一份文件?变量?
  • 是的,你是对的,这是我的错。我错过了代码中的一行,其中变量像user.getSurname() + " " 这样连接起来,所以我找到了字符串null

标签: java string null gson deserialization


【解决方案1】:

这对我来说很好,使用你的代码作为基础:

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}";


}

【讨论】:

    【解决方案2】:

    看起来您必须指定要序列化空值。

    Gson gson = new GsonBuilder() .setPrettyPrinting() .serializeNulls()

    来自 - https://howtodoinjava.com/gson/serialize-null-values/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      相关资源
      最近更新 更多