【发布时间】:2016-10-05 04:50:09
【问题描述】:
我需要在我的响应对象中隐藏模型类中的一些字段。 I tried to follow this SO answer 但没有运气。
当一个字段有 getter 和 setter 时,@JsonIgnore 注释似乎不起作用。有关说明,请参见以下代码 sn-p。
@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;
}
此外,这是对象映射的代码 sn-p
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;
}
任何有用的答案将不胜感激..谢谢
[更新] @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,试试这个库吧。