问题
第三方API 所有字段首字母大写,没有按照驼峰规则,导致服务器端对应字段无法正常入参。
解决办法
在JavaBean的字段上使用@JsonProperty注解 起个别名。使用@RequestBody注解接收。
@JsonProperty(value = "Name",required = false)
private String name;
@JsonProperty(value = "UUID",required = true)
private String uuid;
问题产生原理
首先 JavaBean的规范就是驼峰规则,其 get set方法的规范都是 get+首字母大写的字段名。这就导致使用JavaBean接收参数时,对应的字段无法正常赋值。
@JsonProperty详解
其主要用于在实体类的属性上,作用可以理解为给当前字段起个别名,在反序列化的时候给属性多一个名字来识别(经测试使用@JsonProperty注解后,原先的字段无法通过@RequestBody接口请求注入,必须使用注解定义的value)。
补充:
spring默认使用的是jackson处理json的序列化和反序列化,@JsonProperty是Jackson的注解,常用于属性上。 value属性:代表该属性序列化和反序列化的时候的key值。 required属性:默认false,例如当required=false的时候,当反序列化的时候没有找到key值,就会报错。
引用:
注解@JsonProperty用法 Java变量第一个字母大写,封装实体类时遇到的坑… Java的属性变量名前两个字母大小写问题
|