我有一个Java类MyPojo
,我希望从JSON反序列化它。我配置了一个特殊的MixIn类MyPojoDeMixIn
来帮助我进行反序列化。 MyPojo
仅具有int
和String
实例变量,以及正确的getter和setter。 MyPojoDeMixIn
看起来像这样:
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
在我的测试客户端中,我做了以下操作,但编译时出现了与类型不匹配相关的JsonMappingException
错误。
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
我知道我可以通过创建一个仅包含 ArrayList<MyPojo>
的 "Response" 对象来缓解这个问题,但是这样我就必须为我想要返回的每种类型都创建这些有点无用的对象。我还在网上查看了JacksonInFiveMinutes,但是对于关于
Map<A,B>
以及它与我的问题的关系的内容理解起来非常困难。如果你没能感受到,我完全是一个新手Java开发者,我来自Obj-C背景。他们特别提到:引用:
除了绑定POJO和“简单”类型之外,还有一种变体:绑定到通用(类型化)容器。这种情况需要特殊处理,因为所谓的类型擦除(Java用于以相当向后兼容的方式实现泛型的方法)会阻止您使用诸如Collection.class(不编译)之类的东西。
所以如果您想将数据绑定到Map中,您需要使用:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
我如何直接反序列化为 ArrayList
?