我也遇到了这个问题,找不到利用杰克逊(定制提供的机制的一流解决方案
BeanDeserializer,
BeanDeserializerModifier等等)。
看起来像是处理外部类型ID的方式中的错误。我通过以下方法解决了这个问题:
- 反序列化JSON tring到
JsonNode
; null
如果不存在所需的属性,则手动插入节点;- 映射
JsonNode
到我想要的值类型。
我的代码如下所示:
public <T> T depre(String json, Class<T> type) throws IOException { JsonNode jsonNode = mapper.readTree(json); if (jsonNode.isObject() && (jsonNode.get("payload") == null || jsonNode.get("payload").size() == 0)) { ObjectNode objectNode = (ObjectNode) jsonNode; objectNode.putNull("payload"); } return mapper.treeToValue(jsonNode, type);}


