Fastjson-fastjson中$ref对象重复引用问题

当你有城市数据,你需要按国内、国际、热门城市分成数组的形式给出并输出为json格式。

第一个问题,你的数据格式,需要按字母类别划分,比如:

"int": {
"C": [
{
"acityId": "1001",
"acityIndex": "C",
"cityCname": "成都",
"cityEname": "Chengdu",
"isAbroad": 0,
"isHot": 1
}
],
"L": [
{
"acityId": "1002",
"acityIndex": "L",
"airportCname": "拉萨",
"cityCname": "拉萨",
"cityEname": "Lasa",
"isAbroad": 0,
"isHot": 1
}
]
},

  

然后我们可以通过,Map<字母string, List<城市信息object>>这样来保存数据

//保存首字母对应的list
Map<String,List<Object>> patientDetectionMap = new HashMap<String,List<Object>>();
//保存所有的首字母

  

当你for循环的时候,发现这个城市,既满足国内城市,也满足热门城市,那么就会造成某条内容一样的城市信息fastJson数据的时候,出现:

$ref对象重复引用问题

那么怎么解决呢:

在你要JSON.toJsonString的时候加入

SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测

  

/**
* fastjson中$ref对象重复引用问题
*
* 介绍:
* FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。
* 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致*Error异常。
*
* 用法:
* JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
*/

  

return JSON.toJSONString(list(你的数据), SerializerFeature.DisableCircularReferenceDetect);

  

上一篇:nginx+php安装


下一篇:django ajax练习