由于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 用于解析一条数据
@Testpublic 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);
}