前言
本篇为JAVA自动化的第一篇章,主要为JSON得序列化与反序列化
主要讲述后续自动化中能够使用得部分,如果想了解更多可以查看官方文档
学习条件:JAVA基础部分
JSON介绍
JSON(JavaScript Object Notation, JavaScript 对象表示法) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
JSON语法规则
1.数据在键值对当中
2.数据由逗号分隔
3.大括号{}保存对象
{
"name": "Kai",
"age": "25"
}
4.中括号保存数组
{
"hobby": ["吃饭", "睡觉", "打豆豆"]
}
JSON值类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
{
"name": "Kai",
"age": 25,
"height": 180,
"isSingle": false,
"address": {
"provinces": "上海市",
"city": "徐汇区"
},
"hobby": ["吃饭", "睡觉", "打豆豆"],
"weight": null
}
Jackson处理JSON
Java生态圈中有很多处理Json格式化的类库
常见的解析器:Jsonlib,Gson,fastjson,Jackson,我们一般使用Jackson来处理Json
Jackson是一个功能强大得Java序列化库,除了json之外,还支持YAML,CSV,XML
Maven相关配置:https://mvnrepository.com 在此网站找到相关版本,或者直接复制下方
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
相关使用
ObjectMapper是序列化/反序列化操作的核心,Jackson的所有操作都是在ObjectMapper中实现
ObjectMapper objectMapper = new ObjectMapper();
序列化:JAVA对象 --> JSON
不管你是什么结构的对象,想转json,直接 objectMapper.writeValueAsString() 搞定。
对象转json
//先准备一个学生类
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
//将学生类转为json
package json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonDemo1 {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Student student = new Student("Kai", 25);
String json = objectMapper.writeValueAsString(student);
System.out.println(json);
}
}
map转json
package json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
public class JsonDemo2 {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
HashMap<String, Object> map = new HashMap<>();
map.put("test",1);
map.put("age",18);
String json = objectMapper.writeValueAsString(map);
System.out.println(json);
}
}
反序列化:JSON–> JAVA对象
json转对象
package json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonDemo3 {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"name\":\"Kai\",\"age\":\"25\"}";
//JSON字符串转为对象
Student student = objectMapper.readValue(json, Student.class);
System.out.println(student);
}
}
json转map
package json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
public class JsonDemo4 {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"name\":\"Kai\",\"age\":\"25\"}";
HashMap hashMap = objectMapper.readValue(json, HashMap.class);
System.out.println(hashMap);
}
}
结尾
本篇简单介绍了json和Jackson的简单用法,主要为后续JAVA自动化中做准备,如需关于Jackson的详细内容可查看官网