杰克逊忽略了地图的空值和空值

时间:2019-07-11 15:35:19

标签: java json jackson

我很抱歉,因为我知道这个问题已经被问过无数次了,我已经阅读了几乎所有可以找到的主题,但是我真的开始失去理智了。我目前有一个包含地图的对象

Map <String, String> 

该映射基本上是我想使用Jackson转换为JSON的名称值对。关键是,名称的值可以为null或为空,例如,为空字符串,我根本不希望它们显示在JSON中。我已经尝试过在类上使用NON_NULL和NON_EMPTY批注以及尝试在全局范围内进行设置,但似乎没有任何效果。我什至尝试从https://www.concretepage.com/jackson-api/jackson-ignore-null-and-empty-fields复制并粘贴下面的示例,即使那样似乎对我也不起作用。任何人都可以发现我是否在做愚蠢的事情,或者这个例子对其他人也不起作用?我正在使用Jackson 2.0.4,很遗憾无法升级。

        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(Include.NON_NULL);
        mapper.setSerializationInclusion(Include.NON_EMPTY);
        Map<String, String> map = new LinkedHashMap<>();
        map.put("A11", "Mahesh");
        map.put("A22", null);
        map.put("A33", "");
        String jsonMap = mapper.writerWithDefaultPrettyPrinter()
             .writeValueAsString(map);
        System.out.println("Example is: " + jsonMap);

我期望并希望输出为:

{
  "A11" : "Mahesh"
} 

但实际上是:

{
  "A11" : "Mahesh",
  "A33" : "",
  "A22" : null
}

非常感谢您的帮助。

0 个答案:

没有答案