fastxml JsonInclude用于可选

时间:2017-09-14 07:47:20

标签: java optional fasterxml

我有一个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和用户注释 - 仍然将文件序列化。

1 个答案:

答案 0 :(得分:0)

在一些例子中,我看到objectMapper注册了一个jdk8Module。你试过这个吗?也许它只会在注册此模块的情况下处理Optional-Instances。

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());