本文共 4655 字,大约阅读时间需要 15 分钟。
两种方式配置fastjson
一、在启动类直接注入bean
@Bean public HttpMessageConverters fastJsonHttpMessageConverters(){ //1. 需要定义一个converter转换消息的对象 FastJsonHttpMessageConverter fasHttpMessageConverter = new FastJsonHttpMessageConverter(); //2. 添加fastjson的配置信息,比如:是否需要格式化返回的json的数据 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //3. 在converter中添加配置信息 fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return new HttpMessageConverters((HttpMessageConverter ) fasHttpMessageConverter); }
二、创建config类实现WebMvcConfigurer(springboot为2.0版本的)
package com.example.config;import com.alibaba.fastjson.serializer.SerializerFeature;import com.alibaba.fastjson.support.config.FastJsonConfig;import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;import org.springframework.context.annotation.Configuration;import org.springframework.http.MediaType;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.ArrayList;import java.util.List;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2019/1/14 12:46 * @description V1.0 */@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List> converters) { converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter); converters.add(fastJsonHttpMessageConverter()); System.out.println("converters = " + converters); } /** * fastJson相关设置 */ private FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); List supportedMediaTypes = new ArrayList (); supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes); fastJsonHttpMessageConverter.setFastJsonConfig(getFastJsonConfig()); return fastJsonHttpMessageConverter; } /** * fastJson相关设置 */ private FastJsonConfig getFastJsonConfig() { FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 在serializerFeatureList中添加转换规则 List serializerFeatureList = new ArrayList (); serializerFeatureList.add(SerializerFeature.PrettyFormat); serializerFeatureList.add(SerializerFeature.WriteMapNullValue); serializerFeatureList.add(SerializerFeature.WriteNullStringAsEmpty); serializerFeatureList.add(SerializerFeature.WriteNullListAsEmpty); serializerFeatureList.add(SerializerFeature.DisableCircularReferenceDetect); SerializerFeature[] serializerFeatures = serializerFeatureList.toArray(new SerializerFeature[0]); fastJsonConfig.setSerializerFeatures(serializerFeatures); return fastJsonConfig; }}
三、测试
新建个pojo类
package com.example.entity;import com.alibaba.fastjson.annotation.JSONField;import lombok.Data;import java.time.LocalDateTime;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2019/2/14 10:09 * @description V1.0 */@Datapublic class FastJson { private int id; private String name; @JSONField(format = "yyyy-MM-dd hh:mm:ss") private LocalDateTime birthDate;}
接着创建个控制器类
package com.example.controller;import com.alibaba.fastjson.JSON;import com.example.entity.FastJson;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2019/2/14 9:59 * @description V1.0 验证项目集成fastjson是否成功 观察下面的demo2方法表明fastjson配置生效了,默认是启用jackjson */@RestController@RequestMapping("fastJson")public class FastJsonController { @GetMapping("demo2") public FastJson demo2(){ FastJson fastJson = new FastJson(); fastJson.setId(1); fastJson.setName("xiaobu"); fastJson.setBirthDate(LocalDateTime.now()); return fastJson; } @GetMapping("demo3") public String demo3(){ FastJson fastJson = new FastJson(); fastJson.setId(1); fastJson.setName("xiaobu"); fastJson.setBirthDate(LocalDateTime.now()); return JSON.toJSONString(fastJson); }}
结果:
参考:
转载地址:http://sfgai.baihongyu.com/