我必须使用循环引用反序列化JSON。 第一次出现的对象有:
"$id":"1"
参考文献如下:
{"$ref":"1"}
使用@JsonIdentityInfo我可以使$ id可读,但Jackson不会读取引用。 如果我手动删除“$ ref”内容,则反序列化工作,并且只在JSON字符串中包含引用键。
如何让Jackson以“$ ref”风格处理引用?
答案 0 :(得分:0)
我尝试了自己的反序列化器,但对于这个非常简单的问题似乎很复杂。
我要反序列化的类得到:
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="$id")
我接受整个JSON字符串并用regexp替换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("$1");
}
更换字符串几乎没时间。