1. 程式人生 > >SpringBoot 返回Json實體類屬性大小寫問題

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;
 }