Jackson
在使用序列化反序列化之前保证model类有Set、Get、全参 无参构造方法
Book book = Book.builder()
.id(20L)
.author("Bob")
.createTime(new Date())
.build();
//序列化
String str = objectMapper.writeValueAsString(book);
//反序列化
Book book1 = objectMapper.readValue(str, Book.class);
常用的注解
//改变序列化顺序
@JsonPropertyOrder(value={"content","title"})
public class Book {
//为空元素不做序列化
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long id;
//改变序列化/反序列化名字
@JsonProperty("auther")
private String author;
private String title;
private String content;
//定义序列化反序列化时间格式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private List<User> users;
}
参数校验 在需要被校验的类上面加上@Validated
限制 | 说明 |
---|---|
@Null | 只能为null |
@NotNull | 必须不为null |
@AssertFalse | 必须为false |
@AssertTrue | 必须为true |
@DecimalMax(value) | 必须为一个不大于指定值的数字 |
@DecimalMin(value) | 必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 必须是一个将来的日期 |
@Past | 必须是一个过去的日期 |
@Max(value) | 必须为一个不大于指定值的数字 |
@Min(value) | 必须为一个不小于指定值的数字 |
@Pattern(value) | 必须符合指定的正则表达式 |
@Size(max,min) | 字符长度必须在min到max之间 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |