SpringBoot 返回Json实体类属性大小写的解决
作者:IBeanCN
返回Json实体类属性大小写问题
总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的时候返回小写,但是前台依旧大写传参。
查了很多后发现其实是json返回的时候把首字母变小写了,也就是Spring Boot中Jackson的功劳
百度后得@JsonProperty注解完美解决。但与此同时会出现两个问题
如果注解放到属性上,则返回的时候既有大写也有小写,
@JsonProperty("Ao") private Integer Ao;
Result:{Ao:xxx,ao:xxx}
所以注解放在getter上完美解决,返回只有大写不再自动变为小写的问题。
@JsonProperty("Ao") public Integer getAo() { return Ao; }
Result:{Ao:xxx}
Json转换大小写的坑
最近搞了一个Springboot+mybatis的框架,往前端进行Json格式转换的时候,发现属性的大写首字母变小写了,这极大的不方便前后一致性,如是网上一堆乱搜,测试了N多情况,算是把问题解决了,不过坑大,记录如下:
1) 如果没有使用fastjson(阿里巴巴出品),使用@JsonProperty("XXXX")的注解方式可以解决问题,XXXX就是转换成Json的属性名,但注意,只有放在getter上才是有效的,直接在属性上加没效果.(这说明spring 默认的jackson类库处理是基于访问器。
2)如果使用了fastjson,就用@JSONField(name="XXXXX")注解方式进行,这个可以放在属性上。不过放在getter,setter上更好。
3)如果同时有两个存在,一般都是fastjson起效果,不过具体情况可以试下,我遇到的就是fastjson起效。当然要强制失效fastjson,就需要在Application类上加注解:@EnableWebMvc.
总结,初次为大规模做Java项目,开发底层框架,感觉Java的很多框架开发者有点死脑筋,命名规范这玩意就是个规范,你做框架底层没必要越厨代庖,强制采用这些规范。做底层的东西就要把自由度留给使用人员,别人才好在此基础上扩展。虽然可以通过一些注解什么的解决问题,但浪费很多时间。
整体上来说,无论是Java的一些框架还是语法本身都跟C#不在一个自由度上,很多时候都是做些没有什么技术含量的东西。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。