springboot集成fastjson
2024-09-04 22:06:56
@Configuration
@EnableWebMvc
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
/**
* fastjson configuration
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
config.setSerializeFilters((ValueFilter) (object, name, value) -> {
// 针对map类型value为null时输出""
if (Objects.isNull(value)) {
return "";
}
// 数字类型转字符串
if (value instanceof Number) {
return value.toString();
}
return value;
});
ArrayList<MediaType> mediaTypes = Lists.newArrayList();
mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
mediaTypes.add(MediaType.TEXT_HTML);
mediaTypes.add(MediaType.APPLICATION_JSON);
mediaTypes.add(MediaType.TEXT_PLAIN);
converter.setSupportedMediaTypes(mediaTypes);
converter.setFastJsonConfig(config);
// 自定义序列化
config.getSerializeConfig().put(Response.class, new ResponseSerializer(config));
converters.add(converter);
}
}
自定义序列化实现ObjectSerializer
接口
public static class ResponseSerializer implements ObjectSerializer {
private final FastJsonConfig fastJsonConfig;
public ResponseSerializer(FastJsonConfig fastJsonConfig) {
this.fastJsonConfig = fastJsonConfig;
}
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
SerializeWriter out = serializer.getWriter();
Response response = (Response) object;
out.write(JSON.toJSONString(response.body, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializeFilters(), fastJsonConfig.getSerializerFeatures()));
}
}
jsonp注解支持
fastjson已经内置了一个ResponseBodyAdvice
接口的实现JSONPResponseBodyAdvice
我们只需要配置这个Bean就行了
@Configuration
@EnableWebMvc
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
/**
* use {@link ResponseJSONP}
* controller return jsonp data
*/
@Bean
public ResponseBodyAdvice fastJsonpResponseBodyAdvice() {
return new JSONPResponseBodyAdvice();
}
}
最新文章
- [No0000A3]护眼谎言大揭秘,选择正确的方式保护眼睛!
- iptables 思维导图 (zz)
- MD5编码的内存泄露
- 点滴积累【SQL Server】---SQL语句操作约束
- Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决
- JavaScript进阶学习的一些建议
- ntopng-一款流量审计框架的安装以及应用
- Python3.x 和Python2.x 区别
- 常见的概率分布类型(Probability Distribution)
- Teaching yourself programming -一个编程爱好者的碎碎念
- JSP调试技巧
- Mysql实现级联操作(级联更新、级联删除)
- 常用算法2 - 广度优先搜索 &; 深度优先搜索 (python实现)
- Middle of Linked List
- linux下终端游戏
- 每天一个linux命令-uname,输出操作系统信息(内核版本、硬件架构32位/64位等)
- 基于Jquery的文本提示控件 poshytip
- OS | 冯诺伊曼体系和哈佛体系
- Spring核心技术(十一)——基于Java的容器配置(一)
- MFC中的CListControl控件