文章目录
- 序列化和反序列化
- fastjson
- jackson
序列化和反序列化
java解析json的库主要是fastjson和jackson。
将JavaBean转成json格式字符串的过程是序列化,将json转成JavaBean的过程是反序列化。
JavaBean是一个遵循特定写法的Java类。
fastjson
fastjson是阿里的开源json解析库,可以解析json格式的字符串,支持将JavaBean序列化为json字符串,也可以从 json字符串反序列化到JavaBean。
导入maven仓库
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
package com.jgc;
public class Stu {
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void printClass(){
System.out.println("name=" + this.name + ", age=" + this.age);
}
}
package com.jgc;
import com.alibaba.fastjson.JSON;
public class Main {
public static void main(String[] args) {
Stu stu = new Stu();
stu.setName("jgc");
stu.setAge(20);
stu.printClass();
//序列化
String jsonString = JSON.toJSONString(stu);
System.out.println(jsonString);
//反序列化
Stu stu2 = JSON.parseObject(jsonString, Stu.class);
stu2.printClass();
}
}
运行结果如下
name=jgc, age=20
{"age":20,"name":"jgc"}
name=jgc, age=20
jackson
导入maven仓库
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.1</version>
</dependency>
package com.jgc;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.*;
import java.awt.*;
public class Main {
private static ObjectMapper objectMapper = new ObjectMapper();
public static void main(String[] args) throws JsonProcessingException {
Stu stu = new Stu();
stu.setName("jgc");
stu.setAge(20);
stu.printClass();
//序列化
String jsonString = objectMapper.writeValueAsString(stu);
System.out.println(jsonString);
//反序列化
Stu stu2 = objectMapper.readValue(jsonString, Stu.class);
stu2.printClass();
}
}
运行结果如下
name=jgc, age=20
{"age":20,"name":"jgc"}
name=jgc, age=20