由於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);
}