[英]Variable with non-standard getter name not getting returned in Spring
我試圖在我的 API 中返回RemoveHoldPayload
。 我注意到,當我使用以下 getter 名稱isToBeClosedResult
(1) 時,響應缺少toBeClosedResult
但是當我將 getter 名稱更改為標准名稱時: getToBeClosedResult
然后變量在響應 object JSON 中返回。
為什么會這樣?
(1): --------------
{
"autoHolds": null,
"manualHolds": null,
"incidentId": null,
"comment": null,
"commentType": null,
"error": null,
"toBeClosed": false,
"closeStatusCode": 0,
"commentId": null
}
API: -------------
@PostMapping(value = "/dummyAPI")
public Object dummyAPI () throws Exception {
RemoveHoldPayload rh = new RemoveHoldPayload();
return rh;
}
CLASS:-----------
import java.util.List;
public class RemoveHoldPayload {
private List<AggregatedHoldListResource> autoHolds, manualHolds;
private String incidentId, comment, commentType, toBeClosedResult,error;
private boolean toBeClosed;
private short closeStatusCode;
private Integer commentId;
public String getToBeClosedResult() {
return toBeClosedResult;
}
public void setToBeClosedResult(String toBeClosedResult) {
this.toBeClosedResult = toBeClosedResult;
}
public String getIncidentId() {
return incidentId;
}
public void setIncidentId(String incidentId) {
this.incidentId = incidentId;
}
public boolean getToBeClosed() {
return toBeClosed;
}
public void setToBeClosed(boolean toBeClosed) {
this.toBeClosed = toBeClosed;
}
public short getCloseStatusCode() {
return closeStatusCode;
}
public void setCloseStatusCode(short closeStatusCode) {
this.closeStatusCode = closeStatusCode;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public Integer getCommentId() {
return commentId;
}
public void setCommentId(Integer commentId) {
this.commentId = commentId;
}
public String getCommentType() {
return commentType;
}
public void setCommentType(String commentType) {
this.commentType = commentType;
}
public List<AggregatedHoldListResource> getAutoHolds() {
return autoHolds;
}
public void setAutoHolds(List<AggregatedHoldListResource> autoHolds) {
this.autoHolds = autoHolds;
}
public List<AggregatedHoldListResource> getManualHolds() {
return manualHolds;
}
public void setManualHolds(List<AggregatedHoldListResource> manualHolds) {
this.manualHolds = manualHolds;
}
}
Spring 使用Jackson
作為標准JSON
庫,直到最后,它不知道變量的實際類型是什么。 所以基本上它使用 Java 代碼約定,所有 getter 都以get
開頭
檢查此鏈接: Java 中 getter/setter 的命名約定
您可以使用@JsonAlias
,它為反序列化期間要接受的屬性定義一個或多個替代名稱,即將 JSON 數據設置為 Java object。
或@JsonProperty
定義邏輯屬性。 @JsonProperty
可以在非靜態 setter 或 getter 方法或非靜態 object 字段中進行注釋。 邏輯屬性用於 JSON 的序列化和反序列化。 @JsonProperty
注釋如下。
例如,你可以這樣做:
@JsonProperty("toBeClosed")
public Boolean isToBeClosedResult() {
return toBeClosed;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.