我有一个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) {}
}
In my test client I do the following, but of course it does not work at compile time because there is a JsonMappingException
related to a type mismatch.
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>
的"响应"对象来缓解这个问题,但是我必须为我想要返回的每个类型创建这些有点无用的对象.
我也在网上看了JacksonInFiveMinutes,但很难理解Map<A,B>
的内容,以及它与我的问题的关系.如果你说不出来的话,我对Java完全陌生,有Obj-C的背景.他们特别提到:
除了绑定到POJO和"简单"类型之外,还有一个
因此,如果要将数据绑定到 map 中,需要使用:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
我怎么才能直接反序列化到ArrayList
呢?