我如何使用 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("");
}
替换字符串几乎不需要时间。
我必须使用循环引用反序列化 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("");
}
替换字符串几乎不需要时间。