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

eug*_*enn 13 serialization json 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]}
Run Code Online (Sandbox Code Playgroud)

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

mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
Run Code Online (Sandbox Code Playgroud)

Sta*_*Man 20

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

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 现在它看起来像`mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES,false)` (2认同)

小智 12

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

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)


epe*_*leg 7

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