最近在使用fastjson时候遇到一个问题,后台的数据转化为json字符串后发送到前端时候出现了$ref字样的东西,后来明白了这是引用,下面详细介绍下。
一、一个简单的例子
先来上一段代码,运行后打印的结果可能出乎意料,代码如下:
@org.junit.Test
public void testFastJson() {
Map<String, Object> dataMap = new HashMap<>();
List<User> userList1 = new ArrayList<>();
List<User> userList2 = new ArrayList<>();
for (int i = 0; i < 2; i ) {
User user = new User();
user.setId(i);
userList1.add(user);
userList2.add(user);
}
dataMap.put("userList1", userList1);
dataMap.put("userList2", userList2);
System.out.println(JSON.toJSONString(dataMap));
}
上面代码运行后打印结果如下:
{"userList1":[{"id":0},{"id":1}],"userList2":[{"$ref":"$.userList1[0]"},{"$ref":"$.userList1[1]"}]