同时使用@JsonProperty和@ApiModelProperty时,在接口文档上属性名该是啥???

在接口文档中,使用@JsonProperty和@ApiModelProperty时遇到属性名显示问题。Swagger接口文档的生成过程中,JsonProperty影响了属性名的序列化,导致原本的属性名在文档中消失。通过跟踪源码发现,问题出在ApiModelReader.read方法中的POJOPropertiesCollector.collectAll、_addFields及findNameForDeserialization步骤,@JsonProperty的value在findNameForDeserialization中覆盖了原有属性名。要解决这个问题,需要理解这两个注解在序列化和接口文档生成时的不同作用。
摘要由CSDN通过智能技术生成

场景

由于想在接口文档上显示属性的描述,于是使用了如下代码

@JsonProperty(value = "aaBB")
@ApiModelProperty(value = "描述内容")
private Integer cc;

可是打开接口文档一看,原来的cc属性不见了,只剩下aaBB。

小白我只知道,@JsonProperty适用于序列化时转换的,@ApiModelProperty是为了接口文档展示使用的。两者这么说下来好像没什么关系啊。没想明白,心里有点堵。上网搜寻了好久,只发现别人有使用@JsonProperty来强制改变名字的需求,但是没有说明为啥可以这样。只能自己慢慢看看源码了…

swagger接口文档的内容总归来源于你的代码,所有的信息其实就是在AbstractApplicationContext 的refresh方法,有了雏形。

AbstractApplicationContext.refresh ->

EmbeddedWebApplicationContext.finishRefresh ->

AbstractApplicationContext.finishRefresh ->

DefaultLifecycleProcessor.onRefresh -> startBeans -> start -> doStart
->

DocumentationPluginsBootstrapper.start -> scanDocumentation

ApiDocumentationScanner.scan ->

ApiList

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值