【发布时间】:2021-02-14 22:31:17
【问题描述】:
在使用ObjectMapper 进行一些实验时偶然发现了这种行为。请参阅下面的 Junit5 测试用例以及在 cmets 中为我打印的内容。
class TestIt {
private ObjectMapper om = new ObjectMapper();
private TestClass testClass = new TestClass();
@Getter @Setter
public class TestClass {
private final String value = LocalDate.now().toString();
private String valueLeftNull;
}
@Test
void defaultMapping() throws JsonProcessingException {
System.out.println(om.writeValueAsString(testClass));
// {"value":"2020-11-02","valueLeftNull":null}
}
@Test
void nonNull() throws JsonProcessingException {
om.setSerializationInclusion(Include.NON_NULL);
System.out.println(om.writeValueAsString(testClass));
// {"value":"2020-11-02"}
}
@Test
void both() throws JsonProcessingException {
System.out.println(om.writeValueAsString(testClass));
om.setSerializationInclusion(Include.NON_NULL);
System.out.println(om.writeValueAsString(testClass));
System.out.println(om.writeValueAsString(new TestClass()));
// {"value":"2020-11-02","valueLeftNull":null}
// {"value":"2020-11-02","valueLeftNull":null}
// {"value":"2020-11-02","valueLeftNull":null}
}
}
最后一个both() 是我想知道的。 ObjectMapper第一次序列化后忽略包含指令是正常功能吗?
【问题讨论】:
标签: java json serialization jackson jackson2