【发布时间】:2019-05-13 20:43:22
【问题描述】:
我正在尝试概括这种方法:
public EventStream<Greeting> deserialize(String value){
ObjectMapper mapper = new ObjectMapper();
EventStream<Greeting> data = null;
try {
data = new ObjectMapper().readValue(value, new TypeReference<EventStream<Greeting>>() {});
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
EventStream 在哪里:
public class EventStream<T> {
private EventHeaders headers;
@JsonDeserialize
private T payload;
}
我想要的是在反序列化方法中用泛型替换特定的 Object Greeting。
我试过这个:
public <T> EventStream<T> deserialize(String value){
ObjectMapper mapper = new ObjectMapper();
EventStream<T> data = null;
try {
data = new ObjectMapper().readValue(value, new TypeReference<EventStream<T>>() {});
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
但 EventStream 结果中的负载被反序列化为 LinkedHashMap。似乎 TypeReference 忽略了泛型类型。 任何想法? 谢谢
【问题讨论】:
-
如果可以反映泛型类型,TypeReference 一开始就不会存在。
标签: java serialization jackson deserialization json-deserialization