在springmvc中解决FastJson循环引用的问题
来源:互联网 发布:淘宝彩妆店铺推荐 编辑:程序博客网 时间:2024/05/29 07:13
我们先来看一个例子:
- 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"}}
问题是如果我们在spring mvc中使用的时候,需要将SerializerFeature注入到MessageConverter里面,
FastJsonHttpMessageConverter
但是SerializerFeature是一个enum类型的,又是一个array,考虑到大部分人对这个不熟悉,直接上代码了。
- <bean id="jsonConverter"
- class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
- <property name="supportedMediaTypes" value="application/json;charset=UTF-8"/>
- <property name="features">
- <array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
- <value>DisableCircularReferenceDetect</value>
- </array>
- </property>
- </bean>
- <bean id="DisableCircularReferenceDetect" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
- <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>
- </bean>
阅读全文
0 0
- 在springmvc中解决FastJson循环引用的问题
- 在springmvc中解决FastJson循环引用的问题
- 在springmvc中解决FastJson循环引用的问题
- springmvc中解决FastJson循环引用的问题
- springmvc中解决FastJson循环引用的问题
- 【FastJSON】解决FastJson中“$ref 循环引用”的问题
- 【FastJSON】解决FastJson中“$ref 循环引用”的问题
- 解决FastJson中“$ref 循环引用”的问题
- 【FastJSON】解决FastJson中“$ref 循环引用”的问题<三种方式对应不同需求>
- 解决FastJson的$ref循环引用检测的问题
- FastJson循环引用问题
- 如何在 iOS 中解决循环引用的问题
- 如何在 iOS 中解决循环引用的问题
- 解决fastjson循环引用问题(死循环)
- 【Java】消除fastjson对同一对象循环引用的问题
- ios开发--如何在 iOS 中解决循环引用的问题(FBRetainCycleDetector框架)
- springmvc项目使用fastjson作为json处理器时出现重复引用、循环引用的解决办法
- 在SpringMvc中解决404的问题
- JAVA环境变量配置详解
- 2017西安交大ACM小学期数论 [阅兵式]
- 欢迎使用CSDN-markdown编辑器
- 深度学习文章阅读1--Very deep convolutional networks for large-scale image recognition
- 简单的github的教程
- 在springmvc中解决FastJson循环引用的问题
- eclipse中使用git
- 样式表,脚本阻塞
- java操作Excel
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- struts2获取作用域对象---【小白系列】0基础到熟练应用struts2框架(三)
- 视频质量测试常见编解码表,各种视频测试知识列表
- Hdu 1702 ACboy needs your help again!
- 按返回键实现home键的效果