1.导入三个包添加引用库
2.准备实验
2.1实体类模型
public class Student {
private String name;
private int 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;
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.2实体类解析成JSON
//1.造核心类
ObjectMapper objectMapper=new ObjectMapper();
//1.1造测试类
Student stu1 = new Student("李小龙", 18);
//2.调用核心类的方法
String s = objectMapper.writeValueAsString(stu1);
System.out.println(s);
2.3JSON字符串解析成对象
//1.造核心类
ObjectMapper objectMapper=new ObjectMapper();
//1.1造测试 JSON 字符串 把刚刚的粘贴到这里
String s="{\"name\":\"李小龙\",\"age\":18}";
//2.调用核心类的方法
Student stu = objectMapper.readValue(s, Student.class);
System.out.println(stu);
3.解析含有引用数据类型的对象
//1.造核心类
ObjectMapper objectMapper=new ObjectMapper();
//1.1造测试类
Student stu1 = new Student("李小龙", 18);
Student stu2 = new Student("成龙", 20);
Student stu3 = new Student("李云龙", 25);
ArrayList<Student> arrayList=new ArrayList<>();
arrayList.add(stu1);
arrayList.add(stu2);
arrayList.add(stu3);
//2.调用核心类的方法
String s = objectMapper.writeValueAsString(arrayList);
System.out.println(s);
3.1然后反过来解析
//1.造核心类
ObjectMapper objectMapper=new ObjectMapper();
//1.1造测试 JSON字符串
String s="[{\"name\":\"李小龙\",\"age\":18},{\"name\":\"成龙\",\"age\":20},{\"name\":\"李云龙\",\"age\":25}]";
//2.调用核心类的方法
ArrayList arrayList = objectMapper.readValue(s, ArrayList.class);
System.out.println(arrayList);
成功了,但是好像怪怪的Student不见了,可以看看前一个解析结果。
3.2加点细节
//1.造核心类
ObjectMapper objectMapper=new ObjectMapper();
//1.1造测试 JSON字符串
String s="[{\"name\":\"李小龙\",\"age\":18},{\"name\":\"成龙\",\"age\":20},{\"name\":\"李云龙\",\"age\":25}]";
//2.调用核心类的方法
ArrayList arrayList = objectMapper.readValue(s,new TypeReference<ArrayList<Student>>(){});
System.out.println(arrayList);
TypeReference<ArrayList>(){}
注意花括号不要忘记
解析成功
总结
对象解析成JSON
objectMapper.writeValueAsString(对象);
JSON解析成对象
objectMapper.readValue(s,目标类.class);
含有引用对象的JSON解析成对象
objectMapper.readValue(s,new TypeReference<ArrayList>(){});