【发布时间】:2019-07-09 10:20:45
【问题描述】:
我想将 json 字符串反序列化为 java 对象。我想写一个泛型方法。
public class ObjectSerializer<T> {
T t;
private ObjectMapper mapper = new ObjectMapper();
/* public Person deSerial(String json) throws Exception {
TypeReference<Person> typeRef = new TypeReference<Person>() {};
return mapper.readValue(json, typeRef);
} */
public T deSerialize(String jsonInput) throws Exception {
TypeReference<T> typeRef
= new TypeReference<T>() {};
return mapper.readValue(jsonInput, typeRef);
}
}
当我打电话给deSerialize(validPersonJsonString) [validPersonJsonString : valid person JSON String] 时,它不起作用,它给我一个错误:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.example.Person.
然而,当调用注释的deSerial 方法时,它工作正常。请说明问题。
谢谢。
【问题讨论】:
-
我看不出在这里使用泛型的意义。只需将所需的类传递给
deSerialize,因此将其称为deSerialize(json, Person.class);。更容易,更少的样板。 -
嗨@Tom,明天我想与Employee.class一起使用我将如何使用它?我不想为 Employee.class 写另一个方法
-
@Raghu 使用类
?与 ObjectMapper 允许您将 JSON 转换为对象的方式完全相同。 -
对泛型使用 deSerialize(json,class
clazz) -
@SHAHAKASH 你的评论是错误的。您正在混合方法定义和方法调用。
标签: java generics objectmapper jackson-databind