目录
1、问题产生的背景
2、出现的现象
3、解决方案
4、成果展现
5、总结
6、参考文章
1、问题产生的背景
因为本人最近工作相关的对接外部项目,在我们国内有很多程序员都是使用汉语拼音或者部分字母加上英文复合体定义返回实体VO,这样为了能够符合对接方的字段要求。于是在定义返回实体类型需要按照对方要求进行定义。我是发现好些部分银行里面接口定义的字段也有类似情况。最近在对接一个供水平台的对外提供给某市的公共数据管理平台的时候就发现上述描述情况。
2、出现的现象
我在按照对应的文档要求定义了相关的返回实体VO,如下图所示。
结果在返回的请求响应结果如下图所示:
这样返回结果肯定不符合预期要求,那如何来解决这种问题呢?最后想到问题应该出在如下两个地方:
1、我使用Lombok,可能出现在此处
2、是否因为Bean的属性设置问题原因
经过网上查询相关资料,问题就出在Bean的定义属性。参数命名不规范原来的 POJO 的参数有【uCode】,这种命名而且 pojo 是 lombok 注解管理的 导致 jackson 自动转换成小写了。
3、解决方案
在 pojo 加上 @JsonAutoDetect (fieldVisibility= JsonAutoDetect.Visibility.ANY,getterVisibility= JsonAutoDetect.Visibility.NONE)
注解解释:
@JsonAutoDetect 该注解用来 改变默认的自动检测,标记在类上
jackson默认大小写敏感,且首字母转小写 用来指定字段、方法的可见性规则 @JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY,getterVisibility=JsonAutoDetect.Visibility.NONE)
4、成果展现
经过上面的注解的加入之后,达到了预期的效果。
5、总结
凡是遇见的问题,一般其他人应该也遇见过,需要自己思考搜索相关的关键字才能找到对应的解决方案,所以解决问题需要抓住问题的关键本质。如此问题需要搜索关键词 jackson 转 jsonjackson 转 json jackson 转 json参数大小写问题 返回字段大小写 不一致参数大小写问题
6、参考文章
https://my.oschina.net/u/4540973/blog/4657027
https://www.likecs.com/show-933963.html
https://blog.csdn.net/weixin_45502734/article/details/124306296