SpringBoot 返回Json实体类属性大小写的解决

编辑: admin 分类: java 发布时间: 2021-12-04 来源:互联网
目录
  • 返回Json实体类属性大小写问题
  • Json转换大小写的坑

返回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#不在一个自由度上,很多时候都是做些没有什么技术含量的东西。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

【文章出处:cc防御 转载请说明出处】