4
A 项目服务中未设置:DisableCircularReferenceDetect
,这样得到了带有引用的 JSON 字符串。
在另一个 B 项目中,使用上述引用的 JSON 字符串,无法再反解析回去了,下面给出一个示例。
A 服务提供的 JSON 字符串:
{
"code": 0,
"msg": "ok",
"data":
[
{
"a": 100,
"b": 200,
"c":
{
"m": 50,
"n": 100
}
},
{
"$ref": "$.data[0].c"
}
]
}
我尝试这样反解析
JSONObject jsonObject = JSON.parseObject(str);
System.out.println("jsonObject = " + jsonObject);
当然,用哪个 fastjson 的版本解析后均和上述一样。
jsonObject = {"code":0,"msg":"ok","data":[{"a":100,"b":200,"c":{"m":50,"n":100}},{"$ref":"$.data[0].c"}]}
估计是 JSON 字符串内容中,键值的内容本身就是 "$ref": "$.data[0].c"
可实际应用想将引用转为实际的信息,那么理想中的数据应为:
{
"code": 0,
"msg": "ok",
"data":
[
{
"a": 100,
"b": 200,
"c":
{
"m": 50,
"n": 100
}
},
{
"m": 50,
"n": 100
}
]
}
不知现在是否支持这样解析?或者后续是否会有这样的设置?