@RequstBody 定义的对象接收不到json中属性值

@RequstBody在将json转换成自定义对象时,json里属性key和对象中属性key一致的情况下,对象能接收到json里的属性,比如全小写(name)、驼峰(userName),只要两边约定好一种方式遵循就不会出现问题

但有时候会与其他系统对接,说白了在不得以的情况下必须遵循其他系统的属性规则,这时候可能会出现不按照规则定义的属性,比如gNo、AAA、GNo等等,处理方式都一样

例如json中有属性值gNo,有两种错误定义方式

情形一:

private String gNo; 

可以告诉你,这样对象中接收不到,如果你输出接口文档,你会发现文档中属性会变成gno,原因是springmvc默认处理类MappingJacksonHttpMessageConverter 在对 json和对象进行转换时,将对象中属性转换成小写,这时候发现gNo和gno不一致,转换不成功

此时会想到一种办法,就是对象中定义的属性不依赖传过来的json属性,相当于中间加一层适配,可以用注解@JsonProperty("json传过来的属性key),此时对象中属性可以随意定义,这样处理,属性是能接收到了,但对象中接收的属性key定义的不好也不行,比如下面情形

情形二:

@JsonProperty("gNo")

private String gNo; 

如果你输出文档,会发现出来两个属性 gno和gNo,这样就会误导别人了

正确的处理方式是

@JsonProperty("gNo")

private String gno; 

对象中属性值全部小写,这里我们差不多可以知道定义的规则了,首字母要小写,第二个字母要小写,尽量用驼峰格式书写

结论:我们在开发过程中一定要按照约定俗成的方式定义属性值,因为大部分框架都是在约定方式下工作的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值