博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swagger 属性名 FastJson支持
阅读量:7114 次
发布时间:2019-06-28

本文共 2783 字,大约阅读时间需要 9 分钟。

hot3.png

在Swagger 里面默认用的是Jackson 序列化

对于我们属性全是用的FastJson的来说的话 很痛苦

113419_MhUS_2760304.png

参数名全成了默认属性名

Swagger提供的默认注解 ApiModelProperty 的name属性也是完全不起作用的

113518_a9KQ_2760304.png

如果项目没有配置Jackson的话 swagger是运行不起来的

贴配置:

@Configuration@EnableSwagger2public class Swagger2 {    @Autowired    private ApplicationContext applicationContext;    @PostConstruct    public void setObjectMapper() {        ObjectMapper objectMapper = new ObjectMapper();        SimpleModule module = new SimpleModule();        objectMapper.registerModule(module);        objectMapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {            @Override            public boolean isAnnotationBundle(Annotation ann) {                if (ann.annotationType() == JSONField.class) {                    return true;                }                return super.isAnnotationBundle(ann);            }            @Override            public PropertyName findNameForSerialization(Annotated a) {                PropertyName nameForSerialization = super.findNameForSerialization(a);                if (nameForSerialization == null || nameForSerialization == PropertyName.USE_DEFAULT) {                    JSONField jsonField = _findAnnotation(a, JSONField.class);                    if (jsonField != null) {                        return PropertyName.construct(jsonField.name());                    }                }                return nameForSerialization;            }            @Override            public PropertyName findNameForDeserialization(Annotated a) {                PropertyName nameForDeserialization = super.findNameForDeserialization(a);                if (nameForDeserialization == null || nameForDeserialization == PropertyName.USE_DEFAULT) {                    JSONField jsonField = _findAnnotation(a, JSONField.class);                    if (jsonField != null) {                        return PropertyName.construct(jsonField.name());                    }                }                return nameForDeserialization;            }        });        ObjectMapperConfigured objectMapperConfigured = new ObjectMapperConfigured(applicationContext, objectMapper);        applicationContext.publishEvent(objectMapperConfigured);    }    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com."))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("在线接口文档")                .contact("good_xw@qq.com")                .version("3.2")                .build();    }}

Jackson配置包含

JacksonAnnotationIntrospector

主要是用来对注解JSONFiled的支持

114115_pCja_2760304.png

114106_KhOB_2760304.png

加上后的效果

转载于:https://my.oschina.net/wallxue/blog/1559736

你可能感兴趣的文章
直播疑难杂症排查(9)— 拖动不准
查看>>
搭建基于用户密码认证的Open***
查看>>
精通MVC3摘译(3)-自定义路由系统
查看>>
LINUX下WEBLOGIC卸载
查看>>
Android第三十三期 - Dialog的应用
查看>>
[QTP] 描述性编程
查看>>
php 启动报错
查看>>
解决SecureCRT连接GNS3时SecureCRT标签窗口同名的问题
查看>>
AWS - 通过Snapshot 还原 EC2实例的一些问题
查看>>
小品Linux文件时间
查看>>
Windows10-AzureAD的支持,云的落地
查看>>
iOS开发那些事-移动平台架构设计
查看>>
【Hibernate框架开发之五】Hibernate对象的三种状态&Session常用方法
查看>>
澄清大数据存储——厂商篇
查看>>
MyBatis多参数传递之默认命名方式示例——MyBatis学习笔记之十二
查看>>
我的友情链接
查看>>
使用python的docker-py实现docker的api操作
查看>>
在非域环境中修改域用户密码的方法
查看>>
虚拟化基础架构Windows 2008篇之10-使用WDS安装Windows 7
查看>>
联想3850 X5服务器添加内存之后红屏
查看>>