我为我的 Person 类创建了一个自定义反序列化器。这仅用于演示目的。我的实际课程更复杂。
json 文件包含格式的版本,然后是人员数组。
在 1.0 版上,我为每个人设置了姓名和年龄。
在 2.0 版中,我有姓名、年龄和性别。
我的问题是我无法访问自定义反序列化器中的版本,或者至少还不知道如何获取它。
jsonObj.get("gender").has();
没有or有没有其他方法可以做到这一点if (jsonObj.get("gender") != null)?
GSON 版本:2.8.5
解串器:
private class PersonDeserializer implements JsonDeserializer<PersonDatapoint>
{
@Override
public PersonDatapoint deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException
{
JsonObject jsonObj = json.getAsJsonObject();
// version 1.0
Person person = new Person(jsonObj.get("name").getAsString());
person.setAge(jsonObj.get("age").getAsInt());
// version 2.0
// how to determine version field in json File?
// person.setGender(jsonObj.get("gender").getAsString());
return person;
}
}
JSON 文件 v1.0:
{
"version": "1.0",
"persons": [
{
"name": "Alex",
"age": 30
},
{
"name": "John",
"age": 31
},
{
"name": "Elise",
"age": 32
}]
}
JSON 文件 v2.0:
{
"version": "2.0",
"persons": [
{
"name": "Alex",
"age": 30,
"gender": "male"
},
{
"name": "John",
"age": 31,
"gender": "male"
},
{
"name": "Elise",
"age": 32,
"gender": "female"
}]
}