Spring Boot中解析屬性首字母為大寫的Json串的解決方案
假設收到Post方法HTTP報文,其body部分內容如下:
{
"AuditState" : "pass",
"CurPage": "0",
"PageSize": 10,
"Status": "refuse"
}
為處理此請求,Controller定義如下:
@RequestMapping(value = "/PostToken", method = RequestMethod.POST)
public void getToken(@RequestBodyDealerCondition condition){
DealerCondition dealerCondition = newDealerCondition();
dealerCondition.setAuditState(condition.getAuditState());
dealerCondition.setCurPage(condition.getCurPage());
return
}
用於接收Post報文中的json串的模型定義如下:
public class DealerCondition {
private String
AuditState ;
private int CurPage;
private int PageSize;
public String getAuditState() {
return AuditState;
}
public void setAuditState(String auditState) {
AuditState = auditState;
}
public int
return CurPage;
}
public void setCurPage(intcurPage) {
CurPage = curPage;
}
public int getPageSize() {
return PageSize;
}
public void setPageSize(intpageSize) {
PageSize = pageSize;
}
}
雖然為了想成功解析引數,特意將DealerCondition中的屬性首字母定義為大寫,與
查詢相關資料後,找到兩種解決方案:
方案一:將DealerCondition的屬性首字母全部改為大寫的同時,需要將訪問級別改為public型別 (此種方案雖然能夠解決問題,但有悖於面向物件的封裝特性)
方案二:使用JsonProperty註解,如下形式
public class DealerCondition {
@JsonProperty(value = "AuditState")
private String
AuditState ;
@JsonProperty(value = "CurPage")
private int CurPage;
@JsonProperty(value = "PageSize")
private int PageSize;
public String getAuditState() {
return AuditState;
}
public void setAuditState(String auditState) {
AuditState = auditState;
}
public int getCurPage() {
return CurPage;
}
public void setCurPage(intcurPage) {
CurPage = curPage;
}
public int getPageSize() {
return PageSize;
}
public void setPageSize(intpageSize) {
PageSize = pageSize;
}
}