解析gson android

时间:2017-02-07 12:43:03

标签: java android json parsing gson

我有一组课程,例如:

    entityClasses = new HashMap<String, Class>();
    entityClasses.put("EntityType1", EntityType1.class);
    entityClasses.put("EntityType2", EntityType2.class);

我也有他们实例的JSON列表:

String entityJSON = "[{"type":"EntityType1","name":"... attributes"},...]";

type 属性将确定将成为JSON解析目标的对象的类。我如何使用gson解析这些?

我尝试了以下内容:

String type = "EntityType1"; // I already can fetch this.
final Class entityClass = entityClasses.get(type);
new Gson().fromJson(entityJSON, new TypeToken<ArrayList<entityClass>>(){}.getType());

如果 entityClass 是实际的类名,而不是表示类的变量,那将会有效。但在我的情况下,我收到以下错误: 未知类:&#39; entityClass&#39;

那么如何通过Class变量进行解析呢?

提前致谢!

1 个答案:

答案 0 :(得分:0)

通常,您不能这样做,因为您应该将类​​作为泛型类型传递:不是List<String.class>,而是List<String>

但是你可以使用这样的解决方法:存储列表TypeToken而不是列表泛型类型:

entityClasses = new HashMap<String, TypeToken>();
entityClasses.put("EntityType1", new TypeToken<ArrayList<EntityType1>>(){});

...
String type = "EntityType1"; // I already can fetch this.
final TypeToken typeToken= entityClasses.get(type);
new Gson().fromJson(entityJSON, typeToken.getType());