代码之家  ›  专栏  ›  技术社区  ›  Emaborsa

GSON-将空值反序列化为“空”字符串

  •  0
  • Emaborsa  · 技术社区  · 5 年前

    我正面临着一种奇怪的行为。让我们以下面的例子为例:

    {
        "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” surname 我原以为它被设置为null,但实际上是一个字符串“null”。
    这是正确的行为还是我遗漏了什么?我试着用谷歌搜索它,但很难找到与之相关的东西 String null ...

    0 回复  |  直到 5 年前
        1
  •  0
  •   Michael Welch    5 年前

    以您的代码为基础,这对我来说很好:

    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
  •  -1
  •   AndrewG    5 年前

    看起来必须指定要序列化null。

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

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