今天写代码时遇到一个重复引用问题
public static void main(String[] args) {
List<ResultVO> resultVOList = getResultVO();
ResultVO vo = resultVOList.get(0);
vo.setItem(resultVOList);
System.out.println(com.alibaba.fastjson.JSON.toJSONString(vo));
}
输出结果
{"item":[{"$ref":".."}]}
网上查了下资料
引用标识说明:
“$ref”:”..” 上一级
“$ref”:”@” 当前对象,也就是自引用
“$ref”:”$” 根对象
{"$ref":"../.."} 引用父对象的父对象
“$ref”:”$.children.0” 基于路径的引用,相当于root.getChildren().get(0)
想了下,这里ResultVO vo = resultVOList.get(0); 我把resultVOList 第一个对象引用给了vo , 然后vo.setItem(resultVOList);
把 resultVOList 里得所有对象都给了vo 的 item ,这样 resultVOList 的第一个对象引用就重复了,用"$ref":".." 来代替了
解决方案,
在代码中,尽量不要重复引用
public static void main(String[] args) {
List<ResultVO> resultVOList = getResultVO();
ResultVO vo = new ResultVO();
vo.setStoreNo(resultVOList.get(0).getStoreNo());
vo.setCarid(resultVOList.get(0).getCarid());
vo.setVin(resultVOList.get(0).getVin());
vo.setItem(resultVOList);
System.out.println(com.alibaba.fastjson.JSON.toJSONString(vo));
}
结果
{"carid":"32323323","item":[{"carid":"32323323","storeNo":"zzzzzz","vin":"rrrrrrrrr"}],
"storeNo":"zzzzzz","vin":"rrrrrrrrr"}