SpringBoot配置FastJson的时候,报错:
1java.lang.IllegalArgumentException: Content-Type cannot contain wildcard type '*' 2 at org.springframework.util.Assert.isTrue(Assert.java:116) ~[spring-core-5.0.13.RELEASE.jar!/:5.0.13.RELEASE] 3 at org.springframework.http.HttpHeaders.setContentType(HttpHeaders.java:861) ~[spring-web-5.0.13.RELEASE.jar!/:5.0.13.RELEASE] 4 at org.springframework.http.converter.AbstractHttpMessageConverter.addDefaultHeaders(AbstractHttpMessageConverter.java:255) ~[spring-web-5.0.13.RELEASE.jar!/:5.0.13.RELEASE] 5 at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:210) ~[spring-web-5.0.13.RELEASE.jar!/:5.0.13.RELEASE] 6 at com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter.write(FastJsonHttpMessageConverter.java:244) ~[fastjson-1.2.57.jar!/:?] 7
看FastJson初始化:
1public static final MediaType ALL = valueOf("*/*"); 2public FastJsonHttpMessageConverter() { 3 super(MediaType.ALL); // */* 4}
看来不能有通配符,所以需要像下面配置:
1@Bean 2public HttpMessageConverters fastJsonHttpMessageConverters() { 3 //创建FastJson信息转换对象 4 FastJsonHttpMessageConverter fastJsonHttpMessageConverter = 5 new FastJsonHttpMessageConverter(); 6 7 List<MediaType> supportedMediaTypes = Lists.newArrayList(); 8 //从1.1.41升级到1.2.之后的版本必须配置,否则会报错 9 supportedMediaTypes.add(MediaType.APPLICATION_JSON); 10 supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); 11 fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes); 12 13 //创建FastJson对象并设定序列化规则 14 FastJsonConfig fastJsonConfig = new FastJsonConfig(); 15 //添加自定义valueFilter 16 //规则赋予转换对象 17 fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); 18 StringHttpMessageConverter stringHttpMessageConverter = 19 new StringHttpMessageConverter(Charset.defaultCharset()); 20 21 fastJsonConfig.setSerializerFeatures( 22 //消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环) 23 SerializerFeature.DisableCircularReferenceDetect, 24 //是否输出值为null的字段,默认为false 25 SerializerFeature.WriteMapNullValue 26 ); 27 28 return new HttpMessageConverters(fastJsonHttpMessageConverter, stringHttpMessageConverter); 29}