我的問題與「Jackson and generic type reference」類似,但添加了我的泛型類是抽象的皺紋,所以必須將其映射到具體類型。這在Jackson v2.5.3下運行良好,但Jackson(v2.7.2或更早版本)中的最近更改已將其打破。傑克遜將抽象類型映射到具體類型時將類型綁定丟棄
我有抽象類Page和具體類PageImpl。我曾經是能夠反序列化頁面的PageImpl,沒問題:
SimpleModule module = new SimpleModule().addAbstractTypeMapping(Page.class, PageImpl.class)
ObjectMapper objectMapper = new ObjectMapper().registerModule(module);
,但現在,我已經通過調試源,當傑克遜抽象類型映射到具體類型,它丟棄的類型綁定教訓。這意味着,如果我告訴傑克遜DESER一個給定的JSON字符串類型頁< XYZ> ...
value = objectMapper.readValue(json,
typeFactory.constructSimpleType(Page.class,
new JavaType[]{typeFactory.constructSimpleType(XYZ.class, null)}));
...它會映射輸出類型PageImpl,但在此之前則丟棄該類型綁定將JSON反序列化爲PageImpl。這會導致PageImpl POJO包含LinkedHashMap對象列表,而不是XYZ對象列表。
我不確定爲什麼傑克遜是這樣改變的;它看起來像一個錯誤。尋找解決方法的建議。謝謝!