1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package cn.wisenergy.chnmuseum.party.conf;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import java.util.ArrayList;
import java.util.List;
@Configuration
@ConditionalOnClass({JSON.class})
public class FastJsonHttpMessageConvertersConfig {
@Configuration
@ConditionalOnClass({FastJsonHttpMessageConverter.class})
@ConditionalOnProperty(name = {
"spring.mvc.converters.preferred-json-mapper"}, havingValue = "fastjson", matchIfMissing = true)
protected static class FastJson2HttpMessageConverterConfiguration {
protected FastJson2HttpMessageConverterConfiguration() {
}
@Bean
@ConditionalOnMissingBean({FastJsonHttpMessageConverter.class})
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.DisableCircularReferenceDetect
);
// 处理ie浏览器保存数据时出现下载json数据问题
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.APPLICATION_JSON);
mediaTypes.add(MediaType.TEXT_PLAIN);
//mediaTypes.add(new MediaType("text", "plain", Charset.forName("UTF-8")));
converter.setSupportedMediaTypes(mediaTypes);
// o 是class,s 是key值,o1 是value值
ValueFilter valueFilter = (o, s, o1) -> {
if (null == o1) {
o1 = "";
}
return o1;
};
fastJsonConfig.setSerializeFilters(valueFilter);
converter.setFastJsonConfig(fastJsonConfig);
return converter;
}
}
}