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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决springboot bean中大写的字段返回变成小写的问题

    例如我的bean中有以下4个字段 private String code; private String _TOKENUUMS; private String TGC; private String U; 在返回的json里只会显示 {"code":"xx","tgc":"xx","u":"xx"} 大小会变成小写,特殊符号开头的字段都不会显示,其原因是因为springboot在进行序列

  • SpringBoot返回统一的JSON标准格式实现步骤

    期望返回的JSON格式如下 { "code": 200, "msg": "操作成功", "data": "hello jenkins" } 实现步骤如下 1.自定义状态码枚举类. @AllArgsConstructor @Getter public enum StatusCodeEnum { SC200(200, "操作成功"), SC999(999, "操作失败")

  • SpringBoot之返回json数据的实现方法

    一.创建一个springBoot个项目 操作详情参考:1.SpringBoo之Helloword 快速搭建一个web项目 二.编写实体类 /** * Created by CR7 on 2017-8-18 返回Json数据实体类 */ public class User { private int id; private String username; private String password; public String getPassword() { return password;

  • spring boot 统一JSON格式的接口返回结果的实现

    前后端分离的项目开发前,会提前规定好数据返回格式,本文以JSON为例. 第一步,定义好JavaBean. package com.yclouds.myhelper.web.response; import com.fasterxml.jackson.annotation.JsonIgnore; import com.yclouds.myhelper.web.error.code.BaseEnumError; import java.io.Serializable; import lombok.D

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

    目录 返回Json实体类属性大小写问题 Json转换大小写的坑 返回Json实体类属性大小写问题 总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的时候返回小写,但是前台依旧大写传参. 查了很多后发现其实是json返回的时候把首字母变小写了,也就是Spring Boot中Jackson的功劳 百度后得@JsonProperty注解完美解决.但与此同时会出现两个问题 如果注解放到属性上,则返回的时候既有大写也有小写, @JsonProperty("Ao&qu

  • SpringBoot返回Json对象报错(返回对象为空{})

    目录 1 需求描述 2 代码展示 3 原因分析 4 解决方案 5 效果展示 6 结束语 1 需求描述 我们现在要干一个什么事情呢,我们要在浏览器输入一个请求地址,然后我们的后端就给我返回一个User对象即可,并且我希望以Json的格式返回.这个需求很明确,我们先直观的展示一下效果.发送请求: 接受结果: 2 代码展示 行了,明确了需求我们开始整活儿.首先我们老规矩还是先展示一下目录结构(其中标红的文件使我们今天要用到的): 接下来是具体的文件内容首先呢我们展示一下User.java文件 pack

  • MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题

    在项目开发中,我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,下面小编给大家演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突问题,感兴趣的朋友一起学习吧. 一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, or

  • C#编程获取实体类属性名和值的方法示例

    本文实例讲述了C#编程获取实体类属性名和值的方法.分享给大家供大家参考,具体如下: 遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User { public string name { get; set; } public string gender { get; set; } public string age { get; set; } } //实例化类,并给实列化对像的属性赋值: User u = new User(); u.name

  • java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    实例如下: import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; /** * 获取实体类型的属性名和类型 * @param model 为实体类 * @author kou 为传入参数 */ public class GetModelNameAndType { public

  • Android Studio 一键生成Json实体类教程

    需要装一个插件: File - Settings- Plugins - 搜索gson 安装GsonFromat; 如下两张图 安装完成后 ,新建一个.java文件 如下图: 创建好后 复制你的json串 在生成之前 建议用json工具校验一下 在线校验地址http://www.bejson.com/ 在新建java文件中 鼠标右键: 把你复制的json串复制进去 点ok就可以了 补充知识:Android studio插件GsonFormat,返回json快速创建实体对象 以前添加的图片丢失了,现

  • Mybatis实体类属性与数据库不一致解决方案

    当实体类属性和数据库不一致时,使用mybatis查询数据库返回实体类自动封装就会出现问题.针对这种情况,有两种解决方案. 1.使用别名查询 <!-- 配置查询所有操作 --> <select id="findAll" resultType="com.itheima.domain.User"> select id as userId,username as userName,birthday as userBirthday, sex as us

  • JPA如何使用nativequery多表关联查询返回自定义实体类

    目录 JPA nativequery多表关联查询返回自定义实体类 JPA多表关联的实现方式 优缺点对比 使用sql并返回自定义实体类 JPA多表关联动态查询(自定义sql语句) 实体类 注解解释 测试类 打印结果 TestVo实体接收类 JPA nativequery多表关联查询返回自定义实体类 JPA官方推荐的多表关联查询使用不便,接触的有些项目可能会使用JPA 做简单查询,Mybaits做复杂查询.所以想要寻找一种好用的解决方案. JPA多表关联的实现方式 1.使用Specification

  • mybatis 实体类字段大小写问题 字段获取不到值的解决

    目录 mybatis实体类字段大小写问题 字段获取不到值 解决办法 推断 踩坑mybatis 转换大小写问题 解决方法 mybatis实体类字段大小写问题 字段获取不到值 由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字段. 然后,我在前台向后台传数据的时候,这个rootpath一直都获取不到值.经过排查对比,发现我写的set和get方法名称后面的RootPath 中的P字母大写导致的. 解决办法 将set和get方法后面的P改为小写p就可以了 推断 m

  • mybatis实体类字段大小写及字段获取不到值问题

    目录 mybatis实体类字段大小写及字段获取不到值 问题 解决办法 推断 mybatis下部分字段值无法获取(null) 解决之前 解决方法 mybatis实体类字段大小写及字段获取不到值 问题 由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字段. 然后,我在前台向后台传数据的时候,这个rootpath一直都获取不到值.经过排查对比,发现我写的set和get方法名称后面的RootPath 中的P字母大写导致的. 解决办法 将set和get方法后面的P改

随机推荐