? (1)业务场景:接收前端传输过来的json串,需要将其写入数据库,写入之前需要校验其是否能够转换成对应实体类,以便后续从数据库读取
? (2)方法:借助jackson中的反序列化工具,当字符串不符合json格式或出现实体类中不存在的字段时,会报错。步骤如下:
??【1】引入依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
注意:如果你的项目已经引入了spring-boot-starter依赖,那么就不需要重复引入,spring-boot-starter已自带jackson
??【2】校验代码
public class User {
private int id;
private String name;
public User() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Test
public void test() {
String json1 = "{\"id\":1,\"name\":\"张三\",\"age\":18}";
String json2 = "acg";
String json3 = "{\"id\":1,\"name\":\"张三\"}";
ObjectMapper objectMapper = new ObjectMapper();
try {
objectMapper.readValue(json1, User.class);
System.out.println("json1校验成功!!");
} catch (JsonProcessingException e) {
System.out.println("json1校验失败!!");
}
try {
objectMapper.readValue(json2, User.class);
System.out.println("json2校验成功!!");
} catch (JsonProcessingException e) {
System.out.println("json2校验失败!!");
}
try {
objectMapper.readValue(json3, User.class);
System.out.println("json3校验成功!!");
} catch (JsonProcessingException e) {
System.out.println("json3校验失败!!");
}
}
??【3】运行结果
???json1多出了一个age字段,校验不通过
???json2格式错误,校验不通过
???json3格式正确且User类包含该json所有字段,校验通过
? 注意:实体类必须提供无参构造方法以及set方法
json1校验失败!!
json2校验失败!!
json3校验成功!!