如何避免HashMap中的空值序列化?

时间:2010-06-29 12:26:08

标签: json serialization jackson

我想通过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);

5 个答案:

答案 0 :(得分:19)

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

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);

哪能做你想做的事。现有方法仅适用于bean,并且不会更改以确保最大向后兼容性。

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

答案 1 :(得分:12)

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

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

答案 2 :(得分:7)

使用Jackson 2.1.2我发现我可以用它来注释课程 @JsonInclude(Include.NON_NULL)以便空值根本不会被序列化。

答案 3 :(得分:3)

或者你可以使用@JsonWriteNullProperties(false)注释你的bean

答案 4 :(得分:1)

使用最新的Jackson版本,在ObjectMapper上,你可以这样做:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);