我有课
@Data
public class MyClass {
private Boolean flag;
}
并想将其转换为XML。但是,如果标志不为真,我需要在序列化期间忽略标志字段。
So if 标志=真,我想得到:
<MyClass><flag>true</flag></MyClass>
否则(如果标志 == null 或标志 == false),我想得到:
<MyClass></MyClass>
我该怎么做?
我尝试了 @JsonInclude(JsonInclude.Include.NON_NULL),但它仅适用于空值。
通用的解决方案是使用JsonInclude.Include.CUSTOM
like:
@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = TrueFilter.class)
private Boolean flag;
其中 TrueFilter 会是这样的:
public static class TrueFilter {
@Override
public boolean equals(Object value) {
return !Boolean.valueOf(true).equals(value);
}
}
也不是那么通用的解决方案,但如果您只需要处理字段flag
你可以尝试用以下方法重写 getterNON_NULL
所以喜欢:
@Data
public class MyClass {
@JsonInclude(JsonInclude.Include.NON_NULL)
private Boolean flag;
public Boolean getFlag() {
return (flag != null && flag) ? true : null;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)