fasterxml JsonInclude 可选
fasterxml JsonInclude for optional
我有一个dto如下
public class MyClass {
@JsonProperty("value")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<String> myValue = Optional.empty();
}
当我测试序列化时
@Test
public void should() throws JsonProcessingException {
//GIVEN
val myClass = new MyClass();
myClass.myValue =(Optional.empty());
//WHEN
ObjectMapper mapper = new ObjectMapper();
String valueAsString = mapper.writeValueAsString(myClass);
System.out.println(valueAsString);
//THEN
}
空的可选字段仍然被序列化
{"value":{"present":false}}
我试过使用 Include.NON_ABSENT 和整个用户注释 class - 文件仍然是序列化的。
在一些示例中,我看到 objectMapper 注册了一个 jdk8Module。你试过这个吗?也许它只处理注册了这个模块的可选实例。
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
我有一个dto如下
public class MyClass {
@JsonProperty("value")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<String> myValue = Optional.empty();
}
当我测试序列化时
@Test
public void should() throws JsonProcessingException {
//GIVEN
val myClass = new MyClass();
myClass.myValue =(Optional.empty());
//WHEN
ObjectMapper mapper = new ObjectMapper();
String valueAsString = mapper.writeValueAsString(myClass);
System.out.println(valueAsString);
//THEN
}
空的可选字段仍然被序列化
{"value":{"present":false}}
我试过使用 Include.NON_ABSENT 和整个用户注释 class - 文件仍然是序列化的。
在一些示例中,我看到 objectMapper 注册了一个 jdk8Module。你试过这个吗?也许它只处理注册了这个模块的可选实例。
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());