13

我想通过 Jackson JSON 处理器将 HashMap 序列化为字符串。例如:

String strMap = getMapper().writeValueAsString(myHashMap);
result output -> {"r_id":6,"a_am":null,"smb":"Submit","a_li":null,"l_id":878,"pos":[1345,1346,1347]}

我不知道如何禁用 Map 的空值序列化。如果像这样配置杰克逊,它只适用于 POJO:

mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
4

5 回答 5

20

对于它的价值,杰克逊 1.6 将拥有这个:

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);

确实可以满足您的要求。现有方法仅适用于 bean,并且不会被更改以确保最大的向后兼容性。

编辑:根据评论注释,这是针对 Jackson 1.x 的;Jackson 2.x 有匹配的SerializationFeature

于 2010-08-19T21:08:42.627 回答
12

这是忽略 NULL 字段的最新注释

@JsonSerialize(包括= JsonSerialize.Inclusion.NON_NULL)

于 2013-01-29T23:48:32.957 回答
7

使用 Jackson 2.1.2,我发现我可以对类进行注释, @JsonInclude(Include.NON_NULL)以便根本不序列化空值。

于 2013-03-05T08:52:55.313 回答
3

或者您可以使用 @JsonWriteNullProperties(false) 注释您的 bean,这将

于 2011-03-04T11:23:21.813 回答
2

使用最新的 Jackson 版本,在 ObjectMapper 上,您可以执行以下操作:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

于 2014-08-15T13:45:53.690 回答