13

JacksonJSONプロセッサを介して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のnull値のシリアル化を無効にする方法がわかりません。ジャクソンを次のように構成すると、POJOでのみ正常に機能します。

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

5 に答える 5

20

価値があるものとして、Jackson1.6には次のものがあります。

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false);

これはあなたが望むことをします。既存のメソッドはBeanに対してのみ機能し、最大の下位互換性を確保するために変更されていません。

編集:コメントのメモによると、これはジャクソン1.x用です。ジャクソン2.xは一致していますSerializationFeature

于 2010-08-19T21:08:42.627 に答える
12

NULLフィールドを無視するための最新の注釈は次のとおりです

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

于 2013-01-29T23:48:32.957 に答える
7

@JsonInclude(Include.NON_NULL)Jackson 2.1.2を使用すると、nullがまったくシリアル化されないように、クラスに注釈を付けることができることがわかりました 。

于 2013-03-05T08:52:55.313 に答える
3

または、@ JsonWriteNullProperties(false)でBeanにアノテーションを付けることができます。

于 2011-03-04T11:23:21.813 に答える
2

最新のJacksonバージョンでは、ObjectMapperで次のことができます。

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

于 2014-08-15T13:45:53.690 に答える