SpringBoot 配置FastJson , Google百度一下一大堆 , 我就贴一下我的方式:
- extends org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
- Override configureMessageConverters
public class FastjsonConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
//fastjson MessageConverter
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//fastjson config
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
List<MediaType> fastMediaTypes = new ArrayList<>();
//MediaType : application/json;charset=UTF-8
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
//fastjson config add to converter
fastConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastConverter;
//String MessageConverter , charset : UTF-8
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
//remove response accept charset
stringConverter.setWriteAcceptCharset(false);
//config StringHttpMessageConverter MediaType
List<MediaType> stringSupportedMediaTypes = stringConverter.getSupportedMediaTypes();
//StringHttpMessageConverter MediaType : application/json;charset=UTF-8
stringSupportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
stringConverter.setSupportedMediaTypes(stringSupportedMediaTypes);
converters.add(stringConverter);
converters.add(converter);
}
}
- FastJsonHttpMessageConverter 在FastJson包里,直接引入就可以了.
- fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); // 配置fastjson支持的mediaType为utf8,支持中文
- 配置StringHttpMessageConverter
- 不配置StringHttpMessageConverter的话
return "abc"
;- 经过fastjson处理后 , 拿到的是
"\"abc\""
;
- 配置StringHttpMessageConverter 的 MediaType 为: application/json;charset=UTF-8, 支持中文
- 将两个Converter添加到list
OVER !