如果字段的值为NULL,如何告诉Jackson在序列化期间忽略它?

如果字段的值为NULL,如何告诉Jackson在序列化期间忽略它?

如果字段的值为NULL,则如何将Jackson配置为在序列化期间忽略字段值。

例如:

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; }


手掌心
浏览 1544回答 3
3回答

繁花如伊

若要禁止使用Jackson>2.0使用空值序列化属性,可以配置ObjectMapper直接,或利用@JsonInclude注释:mapper.setSerializationInclusion(Include.NON_NULL);或:@JsonInclude(Include.NON_NULL)class Foo{   String bar;}或者,你可以用@JsonInclude在getter中,如果该值不是NULL,则会显示该属性。中提供了一个更完整的示例我的回答到如何防止Map中的空值和bean中的空字段通过Jackson序列化

泛舟湖上清波郎朗

在Jackson>1.9.11和<2.x的情况下使用@JsonSerialize注释:@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

慕村9548890

只是为了扩展其他答案-如果您需要在每个字段的基础上控制空值的省略,请对所讨论的字段进行注释(或者对字段的“getter”进行注释)。例子-只在这里fieldOne如果它为NULL,将从json中删除。fieldTwo无论它是否为NULL,都将始终包括在内。public&nbsp;class&nbsp;Foo&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@JsonInclude(JsonInclude.Include.NON_NULL)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;fieldOne; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;fieldTwo;}若要省略类中作为默认值的所有空值,请对类进行注释。如果有必要,仍可以使用每个字段/getter注释覆盖此默认值。例子-这里fieldOne和fieldTwo如果它们分别为NULL,则将从json中删除,因为这是类注释设置的默认设置。fieldThree但是,由于字段上的注释,它将覆盖默认值并将始终包括在内。@JsonInclude(JsonInclude.Include.NON_NULL)public&nbsp;class&nbsp;Foo&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;fieldOne; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;fieldTwo; &nbsp;&nbsp;&nbsp;&nbsp;@JsonInclude(JsonInclude.Include.ALWAYS) &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;fieldThree;}更新以上为杰克逊2..为早期版本你需要用的是:@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)而不是@JsonInclude(JsonInclude.Include.NON_NULL)如果这个更新是有用的,请投ZiglioUK的下面的答案,它指出了较新的杰克逊2注释之前,我更新我的答案使用它!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java