SpringBoot 返回Json實體類屬性大小寫問題
阿新 • • 發佈:2018-11-07
問題:
如果前端使用的引數是大寫的而不是標準的駝峰式寫法,那麼後臺在進行引數的互動的時候會出現引數接收不到的問題
如:前端使用 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; }