【发布时间】:2017-04-01 17:07:58
【问题描述】:
我有一个对象列表,我需要将它们反序列化为适当的子类。我已经能够通过构建如下所示的 gson 对象来完成这项工作
JsonDeserializer<Shape> jdTypes = (json, typeOfT, jsonContext) -> {
JsonObject jsonObject = json.getAsJsonObject();
int type = jsonObject.get("type").getAsInt();
Gson gson = new Gson();
switch (type){
case Types.TYPE_CARD:
return gson.fromJson(json, Card.class);
case Types.TYPE_BLOCK:
return gson.fromJson(json, Block.class);
case Types.TYPE_STRIPE:
return gson.fromJson(json, Stripe.class);
//...
}
};
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Shape.class, jdTypes);
builder.create();
虽然它有效,但必须有更好的方法来做到这一点。目前我正在我的 GsonBuilder 中创建一个 Gson 实例。哎呀。有没有办法可以使用我即将构建的 Gson 对象来反序列化不同的子类型?
【问题讨论】:
标签: android json inheritance serialization gson