Как избежать сериализации нулевых значений в HashMap?

Я хотел бы сериализовать HashMap в виде строки через процессор Jackson JSON. Например:

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, если настроить Jackson следующим образом:

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

Ответ 1

Для чего это стоит, Jackson 1.6 будет иметь это:

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);

который делает то, что вы хотите. Существующий метод работает только для beans и не изменяется для обеспечения максимальной обратной совместимости.

EDIT: в соответствии с примечанием к комментариям, это для Jackson 1.x; У Jackson 2.x есть соответствие SerializationFeature

Ответ 2

Вот последняя аннотация для игнорирования полей NULL

@JsonSerialize (include = JsonSerialize.Inclusion.NON_NULL)

Ответ 3

Использование Jackson 2.1.2 Я обнаружил, что могу аннотировать класс с помощью @JsonInclude(Include.NON_NULL), чтобы нули не были сериализованы вообще.

Ответ 4

Или вы можете аннотировать свой bean с помощью @JsonWriteNullProperties (false), который будет

Ответ 5

С последней версией Jackson в ObjectMapper вы можете сделать:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);