SpringBoot 返回Json实体类属性大小写问题

问题:

如果前端使用的参数是大写的而不是标准的驼峰式写法,那么后台在进行参数的交互的时候会出现参数接收不到的问题

如:前端使用 Title 而后端实体类中式title 这样是不统一的;

解决:两种方式 Jackjson 和 Fastjson

  • Jackjson 方式:

通过@JsonProperty注解来解决比较方便,作用是把该属性的名称序列化(或者反序列化接收参数)为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value="name") 

如果注解放到属性上,则返回的时候既有大写也有小写,如下:

@JsonProperty("Ao")
private Integer Ao;

responseBody响应结果:{Ao:xxx,ao:xxx} 

注解放在getter上完美解决,返回只有大写不再自动变为小写的问题。

@JsonProperty("Ao")
public Integer getAo() {
   return Ao;
}

responseBody响应结果:{Ao:xxx}

  • Fastjson方式(Fastjson定制属性的序列化和反序列化):

引用处:

https://github.com/alibaba/fastjson/wiki/JSONField

通过注解的方式来指定序列化和反序列化

//配置在get,set方法上
public class A {
      private int id;
 
      @JSONField(name="ID")
      public int getId() {return id;}
      @JSONField(name="ID")
      public void setId(int value) {this.id = id;}
 }


//配置在field上
public class A {
      @JSONField(name="ID")
      private int id;
 
      public int getId() {return id;}
      public void setId(int value) {this.id = id;}
 }

// 使用format配置日期格式化
 public class A {
      // 配置date序列化和反序列使用yyyyMMdd日期格式
      @JSONField(format="yyyyMMdd")
      public Date date;
 }

猜你喜欢

转载自blog.csdn.net/fragrant_no1/article/details/83539451