Java-Jackson使用详解

Java-Jackson使用详解
序列化
 
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
 
Json是什么?
 
Jason是 JavaScript Object Notation—  JavaScript对象表示法,是一种轻量级数据交换格式。主要用于数据传输,比如说在后端写了一个Java对象,想在其他地方(前端)使用这个对象,就需要转换为Json这种形式进行传输。
 
1.基本规则
 
  数据在名称/值对中:json数据是由键值对构成的
 
     值用引号引起来,也可以不使用引号
 
     值的取值类型: 数字、字符串、布尔值、数组(如{"persons":[{},{},{}]})、对象、null
 
     数据用逗号分隔:多个键值对由逗号分隔
 
     方括号保存数组:[]
 
     花括号保存对象:使用{}定义json格式
 
2.获取数据
 
    json对象。键名
 
    json对象["键名"]
 
    数组对象[索引]
 
    遍历
 
3.用途
 
   以某种存储形式使自定义对象持久化;
 
   将对象从一个地方传递到另一个地方。
 
   使程序更具维护性。
 
Jackson
 
Java生态圈中有很多处理JSON和XML格式化的类库, 常见的解析器:Jsonlib,Gson,fastjson,Jackson。Jackson是其中比较著名的一个,也比较方便。,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法。
 
1.导入Jar包
 
2.Json注解
 
@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
 
@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
 
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
 
public class Person {
 
    private String name;
 
    private int age;
 
     @JsonProperty("gender")
 
    private String gender;
 
   // @JsonIgnore//忽略该属性,不进行转换
 
    @JsonFormat(pattern = "yyyy-MM-dd")
 
    private Date birthday;
 
    public Date getBirthday() {
 
        return birthday;
 
    }
 
    public void setBirthday(Date birthday) {
 
        this.birthday = birthday;
 
    }
 
    public String getName() {
 
        return name;
 
    }
 
    public void setName(String name) {
 
        this.name = name;
 
    }
 
    public int getAge() {
 
        return age;
 
    }
 
    public void setAge(int age) {
 
        this.age = age;
 
    }
 
    public String getGender() {
 
        return gender;
 
    }
 
    public void setGender(String gender) {
 
        this.gender = gender;
 
    }
 
    @Override
 
    public String toString() {
 
        return "Person{" +
 
                "name='" + name + '\'' +
 
                ", age=" + age +
 
                ", gender='" + gender + '\'' +
 
                '}';
 
    }
 
}

推荐阅读