Как избежать сериализации нулевых значений в HashMap? - PullRequest
13 голосов
/ 29 июня 2010

Я хотел бы сериализовать HashMap как строку через 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]}

Я не знаю, как отключить сериализацию нулевых значений для карты. Он отлично работает только для POJO, если настроить Джексона следующим образом:

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

Ответы [ 5 ]

20 голосов
/ 20 августа 2010

Что бы это ни стоило, у Джексона 1.6 будет это:

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);

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

EDIT: согласно примечанию к комментариям, это для Jackson 1.x;Jackson 2.x имеет соответствующий SerializationFeature

12 голосов
/ 30 января 2013

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

@ JsonSerialize (include = JsonSerialize.Inclusion.NON_NULL)

7 голосов
/ 05 марта 2013

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

3 голосов
/ 04 марта 2011

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

1 голос
/ 15 августа 2014

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

mapper.setSerializationInclusion (JsonInclude.Include.NON_NULL);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...