Gson是Google開發的一款json解析庫,可以實現json數據與Java對象之間的相互轉換,具有使用簡單、高效等特點。在實際項目中,我們經常會遇到復雜的json數組,如何使用Gson對其進行解析呢?下面我們來了解一下。
首先,我們需要創建一個Java Bean類,來對應json數據中對應的數據結構。例如,我們現在有一組json數組數據:
{ "data":[ { "id":1, "name":"張三", "age":25, "scores":[ {"name":"語文","score":80}, {"name":"數學","score":90}, {"name":"英語","score":85} ] }, { "id":2, "name":"李四", "age":28, "scores":[ {"name":"語文","score":75}, {"name":"數學","score":88}, {"name":"英語","score":92} ] } ] }
我們需要創建一個Java Bean類,來對應數據結構,如下:
public class Student { private int id; private String name; private int age; private List<Score> scores; //getter和setter方法 } public class Score { private String name; private int score; //getter和setter方法 }
可以看到,在Java Bean類中,使用List來接收scores數組。
接下來,我們需要使用Gson庫中的fromJson方法來解析json數據:
Gson gson = new Gson(); Type listType = new TypeToken<List<Student>>(){}.getType(); List<Student> students= gson.fromJson(jsonData, listType);
其中,TypeToken是一個泛型類,用來獲取泛型信息。
最后,我們就可以遍歷List中的每一個Student對象,獲取并處理數據了:
for(Student student : students) { System.out.println("學生姓名:" + student.getName()); System.out.println("學生年齡:" + student.getAge()); for(Score score : student.getScores()) { System.out.println("科目:" + score.getName() + ",成績:" + score.getScore()); } }
以上就是使用Gson解析復雜json數組的方法,需要注意的是要保證Java Bean類與json數據結構一致。