Json-从Json方法返回列表<HashMap>绑定API

Json-Binding API fromJson method returning List<HashMap>

我正在尝试使用 JSON-B API

从文件中反序列化 json

这是代码

public List<User> getUsers(String file) {
    InputStream is = getResourceAsStream(file);
    return JsonbBuilder.create().fromJson(is, new ArrayList<User>(){}.getClass().getGenericSuperclass());
}

它按预期工作。

我试图概括这种方法而不是硬编码User,但它似乎不起作用

public static <T> List<T> getFromSource(String file, Class<T> t) {
 InputStream is = getResourceAsStream(file);
 return getJsonb().fromJson(is, t.getGenericSuperclass());
}

正在尝试调用上述方法

List<User> users = getFromSource("users.json", User.class);
User user = user.get(0);

但是,它抛出了 Exception in thread "main" java.lang.ClassCastException: java.util.HashMap incompatible with User 所以,尽管 List<User>

看起来它是 List<HashMap>

在您的工作方法中,类型是:

new ArrayList<User>(){}.getClass().getGenericSuperclass()

但是您传递给 getFromSource() 方法的内容实际上是:

User.class.getGenericSuperclass()

要解决此问题,您需要像这样更新传入的参数:

List<User> users = getFromSource("users.json", new ArrayList<User>(){}.getClass());