티스토리 뷰
반응형
Object를 json으로 직렬화할 때 null 값은 포함되지 않도록 하고 싶었다.
객체에 @JsonInclude 어노테이션을 걸어
null 값이 아닌 경우만 포함하도록 해주었지만
클래스에도 필드에도 다 먹히질 않는다.
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Payload {
private String templateCode;
private List<Attribute> attributes;
@JsonInclude(JsonInclude.Include.NON_NULL)
private List<FailoverConfig> failoverConfigs;
public String getTemplateCode() {
return templateCode;
}
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
public List<Attribute> getAttributes() {
return attributes;
}
public void setAttributes(List<Attribute> attributes) {
this.attributes = attributes;
}
public List<FailoverConfig> getFailoverConfigs() {
return failoverConfigs;
}
public void setFailoverConfigs(List<FailoverConfig> failoverConfigs) {
this.failoverConfigs = failoverConfigs;
}
}
Jackson 2 이하 버전에선 @JsonSerialize 어노테이션을 사용해야 한다길래 해봤는데 이것도 실패!
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Payload {
private String templateCode;
private List<Attribute> attributes;
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
private List<FailoverConfig> failoverConfigs;
public String getTemplateCode() {
return templateCode;
}
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
public List<Attribute> getAttributes() {
return attributes;
}
public void setAttributes(List<Attribute> attributes) {
this.attributes = attributes;
}
public List<FailoverConfig> getFailoverConfigs() {
return failoverConfigs;
}
public void setFailoverConfigs(List<FailoverConfig> failoverConfigs) {
this.failoverConfigs = failoverConfigs;
}
}
안되겠다 매퍼에 설정을 해봐야겠다. 이래도 안먹힌다.
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
String json = mapper.writeValueAsString(payload);
또 문제는 버전이었다. Jackson 버전 2.5 이하에서는 아래처럼 설정해줘야 먹힌다고 한다.
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
String json = mapper.writeValueAsString(payload);
반응형
'Java' 카테고리의 다른 글
[Java] 최신 버전의 JDBC 사용 시 SSL(Secure Sockets Layer) 암호화 사용 에러 해결 (0) | 2023.04.11 |
---|---|
[Java] SSL 인증서 PKIX path validation failed 에러 해결 (0) | 2023.03.30 |
[Java] Spring Boot / Gradle 빌드 시 Execution failed for task ':test'. 에러 해결 (3) | 2022.05.24 |
[Java] SchemaManagementException 에러 해결 (0) | 2022.05.11 |
[Java] RestTemplate에서 DELETE 메소드로 Body 보내기 (0) | 2022.04.14 |