JSON解析案例
一个血淋漓的线上问题处理过程
今天处理了工单,用户参数报错,数据层报出的。
然后通过不断的研究fastjson的代码,终于发现了罪魁祸首,竟然是$ref
惹的祸。
用户输入的参数里有一个{"[0]"} ,笔记一下。
下面介绍一些引用的描述:
"$ref":".." 上一级
"$ref":"@" 当前对象,也就是自引用
"$ref":"$" 根对象
"$ref":"$.children.0" 基于路径的引用,相当于 root.getChildren().get(0)
String jsonStr = "[{\"a\":\"aa\"},{\"$ref\":\"$[0]\"}]";
JSONArray objects = JSON.parseArray(jsonStr);
for (Object object : objects) {
System.out.println(object);//输出:{"a":"aa"},{"a":"aa"}
}