我如何使用 Jackson 反序列化循环引用(由 Newtonsoft.Json 序列化)?

How do I deserialize circular references (serialized by Newtonsoft.Json) with Jackson?

我必须使用循环引用反序列化 JSON。 第一次出现的对象有:

"$id":"1"

参考文献如下:

{"$ref":"1"}

通过@JsonIdentityInfo,我可以使$id 可读,但Jackson 不会阅读参考资料。 如果我手动删除反序列化工作的“$ref”内容,并且在 JSON 字符串中只有引用键本身。

如何使 Jackson 以“$ref”样式处理引用?

我尝试了自己的反序列化器,但对于这个非常简单的问题来说,它似乎过于复杂。

我要反序列化的class得到:

@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="$id")

我使用整个 JSON 字符串并用正则表达式替换 ref 内容。

String regex = "\{\\"\$ref\\":\\"(\d{1,})*\\"\}";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);

Matcher matcher = pattern.matcher(jsonString);
String resultString="";
if (matcher.find())
{
    resultString = matcher.replaceAll("");
}

替换字符串几乎不需要时间。