SpringBoot返回Json实体类属性⼤⼩写的解决
⽬录
返回Json实体类属性⼤⼩写问题
Json转换⼤⼩写的坑
返回Json实体类属性⼤⼩写问题
fastjson忽略属性总归上述问题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")的注解⽅式可以解决问题,XX
XX就是转换成Json的属性名,但注意,只有放在getter上才是有效的,直接在属性上加没效果.(这说明spring 默认的jackson类库处理是基于访问器。2)如果使⽤了fastjson,就⽤@JSONField(name="XXXXX")注解⽅式进⾏,这个可以放在属性上。不过放在getter,setter上更好。
3)如果同时有两个存在,⼀般都是fastjson起效果,不过具体情况可以试下,我遇到的就是fastjson起效。当然要强制失效fastjson,就需要在Application类上加注解:@EnableWebMvc.
总结,初次为⼤规模做Java项⽬,开发底层框架,感觉Java的很多框架开发者有点死脑筋,命名规范这玩意就是个规范,你做框架底层没必要越厨代庖,强制采⽤这些规范。做底层的东西就要把⾃由度留给使⽤⼈员,别⼈才好在此基础上扩展。虽然可以通过⼀些注解什么的解决问题,但浪费很多时间。
整体上来说,⽆论是Java的⼀些框架还是语法本⾝都跟C#不在⼀个⾃由度上,很多时候都是做些没有什么技术含量的东西。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论