设置属性是否参与序列化

@JsonIgnoreProperties

用于指定一个类,指定哪些属性不参与序列化。

@JsonIgnoreProperties({"age"})
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}
User user = User.builder().username("job").age(18).build();
String userStr = objectMapper.writeValueAsString(user);
// 打印结果:{"username":"job"}

@JsonIgnore

用于指定一个属性,指定该属性不参与序列化。

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    @JsonIgnore
    private Integer age;
}
User user = User.builder().username("job").age(18).build();
String userStr = objectMapper.writeValueAsString(user);
// 打印结果:{"username":"job"}

@JsonIgnoreType

用于指定一个类,指定该类不参与序列化。

@JsonIgnoreType
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}
User user = User.builder().username("job").age(18).build();
String userStr = objectMapper.writeValueAsString(user);
// 打印结果:{}

@JsonInclude

用于指定一个类或属性,指定该类或属性在序列化时是否参与序列化。默认为 JsonInclude.Include.ALWAYS

@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}
User user = User.builder().username("job").build();
String userStr = objectMapper.writeValueAsString(user);
// 打印结果:{"username":"job"}
  • JsonInclude.Include.ALWAYS:总是参与序列化

  • JsonInclude.Include.NON_NULL:属性值为 null 不参与序列化

  • JsonInclude.Include.NON_EMPTY:属性值为 null 或空字符串不参与序列化

  • JsonInclude.Include.NON_DEFAULT:属性值为默认值不参与序列化

@JsonAutoDetect

强制指定类的属性是否参与序列化。无论是否有 gettersetter 方法。默认为 JsonAutoDetect.Visibility.PUBLIC_ONLY

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}
User user = User.builder().username("job").age(18).build();
String userStr = objectMapper.writeValueAsString(user);
// 打印结果:{"username":"job","age":18}
  • JsonAutoDetect.Visibility.ANY:所有属性都参与序列化

  • JsonAutoDetect.Visibility.NONE:所有属性都不参与序列化

  • JsonAutoDetect.Visibility.NON_PRIVATE:非私有属性参与序列化

  • JsonAutoDetect.Visibility.PROTECTED_AND_PUBLIC:保护和公共属性参与序列化

  • JsonAutoDetect.Visibility.PUBLIC_ONLY:只有公共属性参与序列

最后更新于

这有帮助吗?