JSON的序列化与反序列化
由于前后端分离项目的流行,前端需要JSON字符串,而后端需要JavaBean对象,这时候就需要前后端在交互的时候,能够将JSON字符串和JavaBean对象相互转换,由此引出了JSON的序列化与反序列化
简单来说:
-
JSON的序列化指的就是将JavaBean对象转化为JSON格式的字符串
-
JSON的反序列化指的就是将JSON格式的字符串转化为JavaBean对象
什么是JavaBean对象
?
JavaBean本身就是一个类,它需要满足如下要求:
-
所有的类放在一个包中
-
类必须声明为public
-
类的属性必须要封装起来
-
需要提供get、set方法
-
至少存在一个无参构造方法
由此我们可以知道,一个POJO类,就是一个JavaBean对象,如:
package com.hu.pojo;
public class student{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
常用的关于JSON的注解
@JsonIgnoreProperties注解
// @JsonIgnoreProperties注解:是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响
// ignoreUnknown = true : 忽略类中不存在的字段
// value = {"stackTrace", "cause", "message","localizedMessage", "suppressed"}
@JsonCreator注解
// @JsonCreator注解,其作用是指定对象反序列化时的构造函数或者工厂方法,如果默认构造函数无法满足需求,
// 或者说我们需要在构造对象时做一些特殊逻辑,可以使用该注解,需要搭配@JsonProperty使用
@JsonProperty注解
// @JsonProperty注解,其作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,