我需要在響應對象中隱藏模型類中的一些字段。 I tried to follow this SO answer 但沒有運氣。如何隱藏傑克遜和@JsonIgnore映射到JSON的對象的某些字段失敗
當有一個字段的getter和setter,那麼@JsonIgnore註釋似乎沒有工作。有關說明,請參閱以下代碼段。
@ApiModel(description = "")
public class APIInfoDTO {
private String id = null;
@JsonIgnore //this field will not be hidden when getters and setters are defined..
private String name = null;
private String status = null;
@JsonIgnore // this "info" field is hidden since there are no getters and setters for this field
private String info = "adncusdvshbdvsbvhdb";
/**
**/
@ApiModelProperty(value = "")
@JsonProperty("id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
**/
@ApiModelProperty(value = "")
@JsonProperty("name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
**/
@ApiModelProperty(value = "")
@JsonIgnore
public String getDescription() {
return description;
}
@JsonProperty("description")
public void setDescription(String description) {
this.description = description;
}
此外此爲對象映射
public static APIInfoDTO fromAPIToInfoDTO(API api) {
APIInfoDTO apiInfoDTO = new APIInfoDTO();
apiInfoDTO.setDescription(api.getDescription());
apiInfoDTO.setContext(api.getContext());
apiInfoDTO.setId(api.getUUID());
APIIdentifier apiId = api.getId();
apiInfoDTO.setName(apiId.getApiName());
apiInfoDTO.setVersion(apiId.getVersion());
apiInfoDTO.setProvider(apiId.getProviderName());
apiInfoDTO.setStatus(api.getStatus().toString());
String providerName = api.getId().getProviderName();
apiInfoDTO.setProvider(APIUtil.replaceEmailDomainBack(providerName));
return apiInfoDTO;
}
任何有用的答案將高度讚賞的代碼片段..由於
[UPDATE]的@JsonIgnore可與org.codehaus.jackson :jackson-core-asl:1.8.6但失敗com.fasterxml.jackson.core:jackson-annotations:2.7.2 ..任何想法爲什麼?
jackson-core-asl的等價物是com.fasterxml.jackson.core:jackson-core,只需嘗試使用此庫即可。 –