【发布时间】:2014-04-02 15:30:42
【问题描述】:
我正在使用Jackson库来处理json数据。
我创建了一个 generic 函数来将 json 字符串转换为模型类对象:
public <T> T parseJsonToObject(String jsonStr, Class<T> clazz) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(jsonStr, clazz);
} catch (Exception e) {
}
return null;
}
我有一个 Person 类:
public class Person{
@JsonProperty("first_name")
private String firstName;
@JsonProperty("last_name")
private String lastName;
//Getter & Setters ...
}
我得到了服务器响应,这是一个人员列表:
[{"first_name":"John","last_name":"Smith"},{"first_name":"Kate","last_name":"Green"}]
我的String jsonPersonsStr 持有上面的 json 字符串。
现在我尝试使用我的函数将 json 字符串直接转换为人员列表:
List<Person> persons = parseJsonToObject(jsonPersonsStr, ArrayList.class);
但我得到了例外:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.my.models.Person
如何修改我的泛型函数以消除此异常?
【问题讨论】:
-
可能必须使用
TypeReference。在这里查看答案:stackoverflow.com/a/9502822/1174467