【发布时间】:2011-08-12 12:45:37
【问题描述】:
我有一个问题类似于 stackoverflow 上的一些问题,但没有一个真正回答我的问题。我使用 Jackson 的 ObjectMapper 并希望将此 JSON 字符串解析为用户对象列表:
[{ "user" : "Tom", "role" : "READER" },
{ "user" : "Agnes", "role" : "MEMBER" }]
我这样定义一个内部类:
public class UserRole {
private String user
private String role;
public void setUser(String user) {
this.user = user;
}
public void setRole(String role) {
this.role = role;
}
public String getUser() {
return user;
}
public String getRole() {
return role;
}
}
要将 JSON 字符串解析为 UserRoles 列表,我使用泛型:
protected <T> List<T> mapJsonToObjectList(String json) throws Exception {
List<T> list;
try {
list = mapper.readValue(json, new TypeReference<List<T>>() {});
} catch (Exception e) {
throw new Exception("was not able to parse json");
}
return list;
}
但我得到的是List 的LinkedHashMaps。
我的代码有什么问题?
【问题讨论】:
-
它是 Java 语言,臭名昭著的类型擦除: T 里面有一个类型变量而不是类型定义;并且基本上意味着您要求 List
标签: java generics jackson generic-list linkedhashmap