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