SpringMVCJackson库解析json串属性名⼤⼩写⾃动转换问题问题描述
在项⽬开发中,当实体类和表中定义的某个字段为 RMBPrice,⾸字母是⼤写的,sql 查询出来的列名也是⼤写的 RMBPrice,但是使⽤jquery 的 ajax 返回请求响应时却出错,字段名变⾃动转换成了⼩写的 rmbprice 了。
问题分析
将服务器响应 ajax 请求的数据打印出来,字段名仍然是⼤写的 RMBPrice 。所以,只可能是将 Java 对象转换到 json 串发给客户端的时候出了问题。
经过测试确实如此,即第三⽅ jackson 库在解析 Java 对象为 json 串规则如下:
当Java 对象属性名的前⼏个字母都是⼤写的字母时,都⾃动会转换成⼩写,直到不是⼤写为⽌,若⼩写后⾯还有⼤写,则保持⼤写。
举例:
RRRddRRR 会⾃动转换为 rrrddRRR ;所以,按照以上规则,RMBPrice 会⾃动转换为 rmbprice。
解决办法
⽅法⼀:
将 RMBPrice 按照⾃动转换规则直接改为 rmbprice 即可;但是,这样变量名看起来不是很舒服
⽅法⼆:
使⽤第三⽅ jackson 库时
使⽤ @JsonProperty("属性名") 注解
@JsonProperty("RMBPrice")
private String RMBPrice;
这个注解的作⽤就是告诉 jackson 解析 json 串时直接使⽤注解定义的属性名。
注意:SpringMVC 默认使⽤的是第三⽅库 jackson 解析 Java 对象。
使⽤第三⽅ fastjson 库时
使⽤ @JSONField(name = "属性名") 注解
springmvc考试选择题@JSONField(name = "Name")
public String getName(){
return name;
}
注意:该注解应该放在 get ⽅法前
总结
在实际项⽬开发时,⼀定要遵守 Java 编码规范,可以少踩很多坑,避免很多不必要的问题和⿇烦。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论