我在Enums.java
课程中得到了一个枚举方法,如下所示:
public enum Country
{
@SerializedName("Germany")
Germany,
@SerializedName("Australia")
Australia,
@SerializedName("Canada")
Canada;
@Override
public String toString()
{
return super.toString();
}
}
然后,我得到了一个对象,其属性之一为Enums.Country
,如下所示:
@SerializedName("CountryName")
private Enums.Country countryName;
...
get
set
基本上,国家/地区名称是从服务电话回来的。但是,目前该物体仅处理3个国家,即德国,澳大利亚和加拿大。如果是其他内容,则为null。我怎么能避免它?
感谢。
答案 0 :(得分:1)
它相对容易,只需在您的类中定义未知值,如下所示:
public enum Country
{
Unknown(Unknown"),
@SerializedName("Germany")
Germany,
@SerializedName("Australia")
Australia,
@SerializedName("Canada")
Canada;
}
然后为此Enum
类型编写自定义反序列化程序,并使用它解析此Enum
。例如,使用GSON
的反序列化代码就像这样:
JsonDeserializer<Country> deserializer = new JsonDeserializer<Country>() {
@Override
public Country deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
try {
return Country.valueOf(json.getAsString());
} catch (Exception e){
return Country.Unknown;
}
}
};