Json两种解析方式

由于json数据格式比较简单, 易于读写,经常用于信息的交互。

在工作中也会经常使用到json解析,做个总结也算巩固一下大笑

首先创建一个java bean

Student

public class Student {
private String name;
private String course;
private int grade;
public Student() {
super();
}
public Student(String name,String course,int grade) {
this.name = name;
this.course = course;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student [name=" + name + ", course=" + course + ", grade=" + grade + "]";
}

}

1. Json数据是一个对象格式时,JSONObject 用于解析一条数据

        @Test
public void jsonObjectTest() {
//json数据
String jsonMsg = "{\"name\":\"Tom\",\"course\":\"English\",\"grade\":100}";
//初始化JSONObject对象
JSONObject jsonObj = JSONObject.fromObject(jsonMsg);
//解析获取json数据
String name = (String) jsonObj.get("name");
String course = jsonObj.getString("course");
int grade = jsonObj.getInt("grade");
//初始化学生对象
Student stu = new Student(name,course,grade);
//输出学生对象信息
System.out.println(stu);

}

2. Json数据是一个数组格式时,JSONArray 用于解析一组数据

        @Test
public void jsonArrayTest() {
//json数据
String jsonMsg = "[{\"name\":\"Tom\",\"course\":\"English\",\"grade\":100},"
+ "{\"name\":\"John\",\"course\":\"English\",\"grade\":98}]";
//初始化JSONArray 对象
JSONArray jsonArray = JSONArray.fromObject(jsonMsg);
//解析后的学生信息列表
ArrayList <Student> list = new ArrayList<>();
//遍历JSONArray对象,获取数据
for(int i=0;i<jsonArray.size();i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
String course = jsonObj.getString("course");
int grade = jsonObj.getInt("grade");
//通过json数据初始化学生对象
Student stu = new Student(name,course,grade);
//将学生对象添加到集合中
list.add(stu);
}
//输出学生对象集合
System.out.println(list);
}

PS:Json解析和Junit都需要添加依赖包,网上有很多,就不列举了。(顺便偷个懒 大笑


猜你喜欢

转载自blog.csdn.net/ffb920724/article/details/79530676