티스토리 뷰

반응형

 

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);

(참고 : https://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is-null)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함