我想了解服务器返回值与响应中完全不存在该值的区别。
让我了解到目前为止的情况:
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如何处理?
答案 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);