@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();
}
}

最新文章

  1. [No0000A3]护眼谎言大揭秘,选择正确的方式保护眼睛!
  2. iptables 思维导图 (zz)
  3. MD5编码的内存泄露
  4. 点滴积累【SQL Server】---SQL语句操作约束
  5. Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决
  6. JavaScript进阶学习的一些建议
  7. ntopng-一款流量审计框架的安装以及应用
  8. Python3.x 和Python2.x 区别
  9. 常见的概率分布类型(Probability Distribution)
  10. Teaching yourself programming -一个编程爱好者的碎碎念
  11. JSP调试技巧
  12. Mysql实现级联操作(级联更新、级联删除)
  13. 常用算法2 - 广度优先搜索 &amp; 深度优先搜索 (python实现)
  14. Middle of Linked List
  15. linux下终端游戏
  16. 每天一个linux命令-uname,输出操作系统信息(内核版本、硬件架构32位/64位等)
  17. 基于Jquery的文本提示控件 poshytip
  18. OS | 冯诺伊曼体系和哈佛体系
  19. Spring核心技术(十一)——基于Java的容器配置(一)
  20. MFC中的CListControl控件

热门文章

  1. Tomcat部署SSL证书过程中遇到的问题
  2. c++中的四种智能指针
  3. E - 卿学姐与城堡的墙(树状数组求逆序数)
  4. Jade学习(四)之结合node如何编译执行
  5. 01Spring基于xml的IOC配置--入门
  6. Flask开发系列之Web表单
  7. shiro细节、默认的过滤器、匹配模式和顺序
  8. linux 下 SpiderMonkey 1.7.0 编译和安装
  9. AIX中的服务管理
  10. XML 总结