Deserialize with gson and null values

前端 未结 2 1858
情歌与酒
情歌与酒 2020-12-05 07:35

I am trying to deserialize my own class with a null value. But my code doesn\'t work.

My json:

{\"Text\":null,\"Code\":0,\"Title\":\"This is Sparta!\         


        
2条回答
  •  一个人的身影
    2020-12-05 08:25

    First, you must read about how to parse using gson. You can find some example here.

    Now you know how to parse, you can still have problem with null values. To solve it you must tell gson to (de)serialize null using

    Gson gson = new GsonBuilder().serializeNulls().create();
    

    From the serializeNulls() doc

    Configure Gson to serialize null fields. By default, Gson omits all fields that are null during serialization.

    EDIT (Not tested, based on doc)

    In order to get some distinct value you can do

    String json = ""; //Your json has a String
    JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
    
    //If null, use a default value
    JsonElement nullableText = jsonObject.get("Text");
    String text = (nullableText instanceof JsonNull) ? "" : nullableText.getAsString();
    
    String title = jsonObject.get("Title").toString();
    int code = jsonObject.get("Code").getAsInt();
    

    Otherwise if you have this pojo

    public class MyElement {
        @SerializedName("Text")
        private String text;
    
        @SerializedName("Title")
        private String title;
    
        @SerializedName("Code")
        private int code;
    }
    

    you can parse using

    String json = ""; //Your json has a String
    Gson gson = new GsonBuilder().serializeNulls().create();
    MyElement myElement = gson.fromJson(json, MyElement.class);
    

提交回复
热议问题