Jackson
调用链构造
Jackson 的原生反序列化和 Fastjson 类似,都是通过调用其 toString() 方法来调用 getter
Jackson 用到的是 com.fasterxml.jackson.databind.node.BaseJsonNode 这个类,还是一样的用 javax.management.BadAttributeValueExpException 来触发,这一部分内容不过多赘述。
只不过需要删除 com.fasterxml.jackson.databind.node.BaseJsonNode#writeReplace() 方法,避免在序列化时报错。
JACKSON 链的不稳定性
在反序列化时,可以会因为 Jackson 触发 getter 的顺序不同,调用到 TemplatesImpl 类的 getStylesheetDOM() 方法,因为 _sdom 为 null 抛出空指针异常,可以参考这篇文章 从JSON1链中学习处理JACKSON链的不稳定性 的处理