Android Gson - 反序列化空值与缺失值

Android Gson - deserializing null vs absent values

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

让我们来看看我目前所拥有的:

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 值,如果服务器响应中完全没有该值,应用程序会崩溃还是该值为空?

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

max_time: null vs 它完全不存在,gson 是如何处理的?

在这两种情况下,它都将为空。 可能会在这里查看更多信息: Gson optional and required fields

请尝试这个解决方案:

    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);