【发布时间】:2014-07-16 16:14:54
【问题描述】:
我有 3 种不同类型的 json。我想根据 json 本身的一个字段将它们反序列化为对象。
我选择 Gson on Fire 来完成这项任务 github。 有一个非常符合我需要的 TypeSelectors 示例。
所以我写了:
public static Base buildFromJson(String json) {
GsonFireBuilder builder = new GsonFireBuilder().registerTypeSelector(Base.class, new TypeSelector<Base>() {
@Override
public Class<? extends Base> getClassForElement(JsonElement jsonElement) {
String type = jsonElement.getAsJsonObject().get("typ").getAsString();
if (Type.A.toString().equalsIgnoreCase(type)) { return A.class; }
else if (Type.B.toString().equalsIgnoreCase(type)) { return B.class; }
else if (Type.C.toString().equalsIgnoreCase(type)) { return C.class; }
else { return null; }
}
});
Gson gson = builder.createGson();
//...
}
但我在这里卡住了。我需要知道如何返回A、B 或C 的实例。
gson 采用 gson.fromJson(json, Base.class); 应该应用自定义类型选择器的位置。
但我无法弄清楚如何返回所需的实例。
【问题讨论】: