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验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式