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

作者:IBeanCN 时间:2023-08-05 12:30:49 

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

来源:https://blog.csdn.net/github_36887863/article/details/81807088

标签:SpringBoot,Json,实体类,属性
0
投稿

猜你喜欢

  • Gradle的缓存路径修改的四种方法(小结)

    2021-11-09 11:05:51
  • Java包装类原理与用法实例分析

    2022-08-15 19:51:44
  • springboot整合quartz项目使用案例

    2023-02-13 19:57:12
  • Java处理InterruptedException异常的理论与实践

    2023-07-25 03:22:33
  • 进度条ProgressBar及ProgressDialog(实例)

    2021-09-24 01:07:42
  • C#中异步回调函数用法实例

    2023-01-05 13:10:53
  • Android 实现把bitmap图片的某一部分的颜色改成其他颜色

    2022-12-28 00:12:03
  • SpringMVC配置多个properties文件之通配符解析

    2021-10-18 02:19:02
  • Taro打包Android apk过程详解

    2022-01-31 02:55:27
  • Java 用Prometheus搭建实时监控系统过程详解

    2023-09-06 12:07:40
  • Spring集成jedis的配置与使用简单实例

    2023-07-02 04:11:39
  • 微信APP支付(IOS手机端+java后台)版

    2021-12-24 14:16:43
  • 聊聊java 过滤器、监听器、拦截器的区别(终结篇)

    2021-10-10 14:54:51
  • Retrofit 创建网络请求接口实例过程

    2023-11-23 22:26:43
  • C#求n个数中最大值和最小值的方法

    2022-04-20 08:00:01
  • Android开发笔记之:对实践TDD的一些建议说明

    2023-11-25 11:45:18
  • 详细分析android的MessageQueue.IdleHandler

    2023-06-23 19:12:10
  • c#中var关键字用法浅谈

    2022-03-14 00:21:51
  • Java TreeSet实现学生按年龄大小和姓名排序的方法示例

    2023-01-09 15:25:18
  • C#操作注册表之RegistryKey类

    2022-12-11 06:12:53
  • asp之家 软件编程 m.aspxhome.com