使用软件:IDEA 2020.1
JDK:11
Gson:gson-2.8.6
FastJson:fastjson-1.2.70
首先Json可以理解为JS对象简谱,一种轻量级数据交换格式。
目录
有两种常用的解析方式:谷歌的Gson,还有阿里的FastJson
有两种常用的解析方式:谷歌的Gson,还有阿里的FastJson
先来创建一个Student类用来转换
import java.util.Objects;
public class Student {
private String name;
private int age;
private String classNum;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name) &&
Objects.equals(classNum, student.classNum);
}
@Override
public int hashCode() {
return Objects.hash(name, age, classNum);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", classNum='" + classNum + '\'' +
'}';
}
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 getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
public Student(String name, int age, String classNum) {
this.name = name;
this.age = age;
this.classNum = classNum;
}
}
然后来看Gson怎么操作
具体步骤:
import com.google.gson.Gson;
public class GsonTest {
public static void main(String[] args) {
//创建Gson对象
Gson gson = new Gson();
//创建需要进行转为Json格式的对象
Student stu = new Student("赤红",4,"欣欣幼儿园小班");
//调用gson的toJson的方法传入对象即可
String s = gson.toJson(stu);
System.out.println(s);
}
}
输出结果为:{"name":"赤红","age":4,"classNum":"欣欣幼儿园小班"}
我们还可以把这段字符转回对象:
import java.util.HashMap;
public class GsonTest2 {
public static void main(String[] args) {
//创建Gson对象
Gson gson = new Gson();
//调用其fromJson方法传入要转换的Json字符串,然后用对应类型接收
Student s = gson.fromJson("{\"name\":\"赤红\",\"age\":4,\"classNum\":\"欣欣幼儿园小班\"}", Student.class);
System.out.println(s);
//如果我们没有对应的类型,可以存放在Map集合里
HashMap hashMap = gson.fromJson("{\"name\":\"赤红\",\"age\":4,\"classNum\":\"欣欣幼儿园小班\"}", HashMap.class);
String name = (String) hashMap.get("name");
System.out.println(name);
}
}
输出结果为:Student{name='赤红', age=4, classNum='欣欣幼儿园小班'}
赤红
接下来是FastJson
//还是刚刚的Student类
import com.alibaba.fastjson.JSON;
import java.util.List;
public class FastJsonTest {
public static void main(String[] args) {
//创建Student对象
Student s = new Student("青绿",4,"向荣幼儿园小班");
//因为FastJson里的方法都为静态,所以直接通过JSON调用toJSONString方法传入对象即可
String string = JSON.toJSONString(s);
//输出转换结果
System.out.println(string);
//在把刚刚得到的Json格式的字符串转回对象
Student s2 = JSON.parseObject(string,Student.class);
//输出班级号
System.out.println(s2.getClassNum());
//在使用FastJson转数组格式时,需要用parseArray方法。
//["红","橙","黄","绿","青","蓝","紫"]
List<String> list = JSON.parseArray("[\"红\",\"橙\",\"黄\",\"绿\",\"青\",\"蓝\",\"紫\"]", String.class);
遍历数组
for (String str:list) {
System.out.print(str+" ");
}
}
}
以上代码输出结果为:{"age":4,"classNum":"向荣幼儿园小班","name":"青绿"}
向荣幼儿园小班
红 橙 黄 绿 青 蓝 紫
以上为Json的解析简单说明,用到的jar包都可以去GitHub下载