您的位置:首页 > 编程语言 > Java开发

springmvc中解决FastJson循环引用的问题

2015-07-06 09:36 701 查看
package com.elong.bms;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.Map;

import com.alibaba.fastjson.JSON;

public class Test {

public static void main(String[] args) {

Map<String, Student> maps = new HashMap<String, Student>();

Student s1 = new Student("s1", 16);

maps.put("s1", s1);

maps.put("s2", s1);

byte[] bytes = JSON.toJSONBytes(maps);

System.out.println(new String(bytes));

}

}

输出

{"s1":{"age":16,"name":"s1"},"s2":{"$ref":"$.s1"}}

可以看到,这个json如果发到前端是无法使用的,幸好FastJson提供了解决办法,我们来看下,解决办法为禁用循环引用检测,代码如下:

package com.elong.bms;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.Map;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.serializer.SerializerFeature;

public class Test {

public static void main(String[] args) {

Map<String, Student> maps = new HashMap<String, Student>();

Student s1 = new Student("s1", 16);

maps.put("s1", s1);

maps.put("s2", s1);



SerializerFeature feature = SerializerFeature.DisableCircularReferenceDetect;

byte[] bytes = JSON.toJSONBytes(maps,feature);

System.out.println(new String(bytes));

}

}

{"s1":{"age":16,"name":"s1"},"s2":{"age":16,"name":"s1"}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: