我也遇到了这个问题,找不到利用杰克逊(定制提供的机制的一流解决方案BeanDeserializer
,BeanDeserializerModifier
等等)。
看起来像是处理外部类型ID的方式中的错误。我通过以下方法解决了这个问题:
我的代码如下所示:
public <T> T decode(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);
}