使用fastjson的JSONObject的静态方法prseObject()和toJSONString()将Map对象中的值解析为JSONObject的莫名符号$ref

Map> classTable = new HashMap<>();
JSONObject open = JSONObject.parseObject(JSONObject.toJSONString(classTable));

上面的JSONObject变量open中ClassDO类的对象出现了类似这样的值 : "$ref":"$.w7.d2[0]"

经验证,是在不同的List对象中的add进了同一个ClassDO对象:也就是下面这中情况。

ClassDO classDO = new ClassDO();
Map> classTable = new HashMap<>();
List oneList = new LinkedList();
List twoList = new LinkedList();
oneList.add(classDO);
twoList.add(classDO);
classTable.put("one",oneList);
classTable.put("two",twoList);

我就直接使用了spring框架的BeanUtils.copyProperties()方法复制出不同的ClassDO对象加入不同的List中解决了问题,

如下:

ClassDO oneClassDO = new ClassDO();
ClassDO twoClassDO = new ClassDO();
BeanUtils.copyProperties(oneClassDO,twoClassDO) //将oneClassDO中的属性值copy给twoClassDO
Map> classTable = new HashMap<>();
List oneList = new LinkedList();
List twoList = new LinkedList();
oneList.add(oneClassDO);
twoList.add(twoClassDO);
classTable.put("one",oneList);
classTable.put("two",twoList);

 

你可能感兴趣的:(spring,boot)