jackson Include.NOT_NULL 场上不工作

jackson Include.NOT_NULL on field not working

使用 JsonInclude(content=Include.NON_NULL)(或实际上任何其他 JsonInclude 选项)似乎对我的对象的序列化没有影响。考虑这个测试:

public class JsonTest {
    @Data
    @JsonInclude(content=Include.ALWAYS)
    static class TestObj {
        String fieldVisible = "a";
        String fieldVisibleNull = null;
        @JsonInclude(content=Include.NON_NULL)
        String fieldInvisible = null;
    }

    public static void main(String[] args) throws JsonProcessingException {

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writerFor(TestObj.class).writeValueAsString(new TestObj());
        if (json.contains("fieldInvisible")) {
            System.err.println(json);
            throw new RuntimeException("null field written even though it shouldn't be");
        }
    }
}

结果是:

{"fieldVisible":"a","fieldVisibleNull":null,"fieldInvisible":null}
Exception in thread "main" java.lang.RuntimeException: null field written even though it shouldn't be
    at my.package.JsonTest.main(JsonTest.java:57)

我错过了什么?我不明白什么?

正在使用

@JsonInclude(Include.NON_NULL)

而不是

@JsonInclude(content=Include.NON_NULL)

有效。谢谢@Aaron。