Android Gson-反序列化null值与缺少的值

时间:2019-10-04 06:42:51

标签: android gson json-deserialization

我想了解服务器返回值与响应中完全不存在该值的区别。

让我了解到目前为止的情况:

data class MyApiResponse(@SerializedName("name") val name: String,
                                  @SerializedName("address") val address: String,
                                  @SerializedName("max_time") val maxTime: Double? = null //this field  might  BE  COMPLETELY absent in response, what will  happen  here ? 
)

关于maxTime值,如果服务器响应中缺少该值,则该应用程序将崩溃还是该值为null?

问题是我试图区分服务器发送

max_time: null完全缺失,gson如何处理?

2 个答案:

答案 0 :(得分:1)

在两种情况下都将为null。 可以在这里查看更多信息: Gson optional and required fields

答案 1 :(得分:0)

请尝试以下解决方案:

    String json = ""; //Your json has a String
    JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();


    String name = jsonObject.get("name").toString();
    String adress = jsonObject.get("address").toString();
    //If null, use a default value
    JsonElement max_time = jsonObject.get("max_time");
    String text = (max_time instanceof JsonNull) ? "" : max_time.getAsString();




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