Map<String, List<ClassDO>> classTable = new HashMap<>();
JSONObject open = JSONObject.parseObject(JSONObject.toJSONString(classTable));
上面的JSONObject变量open中ClassDO类的对象出现了类似这样的值 : "$ref":"$.w7.d2[0]"
经验证,是在不同的List<ClassDO>对象中的add进了同一个ClassDO对象:也就是下面这中情况。
ClassDO classDO = new ClassDO();
Map<String, List<ClassDO>> classTable = new HashMap<>();
List<ClassDO> oneList = new LinkedList<ClassDO>();
List<ClassDO> twoList = new LinkedList<ClassDO>();
oneList.add(classDO);
twoList.add(classDO);
classTable.put("one",oneList);
classTable.put("two",twoList);
我就直接使用了spring框架的BeanUtils.copyProperties()方法复制出不同的ClassDO对象加入不同的List<ClassDO>中解决了问题,
如下:
ClassDO oneClassDO = new ClassDO();
ClassDO twoClassDO = new ClassDO();
BeanUtils.copyProperties(oneClassDO,twoClassDO) //将oneClassDO中的属性值copy给twoClassDO
Map<String, List<ClassDO>> classTable = new HashMap<>();
List<ClassDO> oneList = new LinkedList<ClassDO>();
List<ClassDO> twoList = new LinkedList<ClassDO>();
oneList.add(oneClassDO);
twoList.add(twoClassDO);
classTable.put("one",oneList);
classTable.put("two",twoList);