我有这个JSON模型:
{
state (int),
result (object)
}
result
可能包含以下模型之一:
public class Person {
someField;
}
public class Book {
someOtherFields;
}
我的意思是,我正在寻找一种方法:
if(result.state == 1)
then deserialize result as a Person
else if(result.state == 2)
then deserialize result as a Book
else throw exception;
我不是JAVA或Android家伙。这只是一个我陷入困境的糟糕情况。你是否知道如何在Android应用中使用GSON lib来做到这一点?
答案 0 :(得分:1)
您可以使用cutom deserializer
来完成如果Book
和Person
有一个名为Element
的父类,则可以创建此反序列化程序(未测试)
public class LatLngDeserializer implements JsonDeserializer<Element> {
@Override
public Element deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
JsonObject jobject = json.getAsJsonObject();
int state = jobject.get("state").getAsInt();
if(state == 1)
return new Person();
else if (state == 2)
return new Book();
else
throw new Exception();
}
}
然后使用
注册GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Element.class, new CustomDeserializer());
Gson gson = gsonBuilder.create();
然后使用
解析Element element= gson.fromJson(jsonInput, Element.class);