设置属性是否参与序列化
@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
强制指定类的属性是否参与序列化。无论是否有 getter
和 setter
方法。默认为 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
:只有公共属性参与序列
最后更新于
这有帮助吗?