在Java中解析JSON數(shù)據(jù)是非常常見的操作,而其中又涉及到JSON中的嵌套解析。下面我們就來詳細(xì)講解一下Java中JSON嵌套解析的操作方法。
//定義JSON數(shù)據(jù) String jsonStr = "{\"name\":\"Tom\",\"age\":20,\"job\":{\"title\":\"engineer\",\"salary\":10000}}"; //創(chuàng)建JSON對象 JSONObject obj = new JSONObject(jsonStr); //獲取name和age值 String name = obj.getString("name"); int age = obj.getInt("age"); //獲取job對象 JSONObject jobObj = obj.getJSONObject("job"); //獲取job對象的title和salary值 String title = jobObj.getString("title"); int salary = jobObj.getInt("salary");
以上代碼中,我們首先定義了一個(gè)JSON字符串,其中包括了一個(gè)job對象,這個(gè)對象嵌套在了最外層的JSON對象中。然后我們通過JSONObject類的構(gòu)造函數(shù)將JSON字符串轉(zhuǎn)換為JSON對象。接著我們通過getString()和getInt()方法獲取最外層JSON對象中的name和age字段的值,并使用getJSONObject()方法獲取到嵌套的job對象。最后通過getString()和getInt()方法獲取到j(luò)ob對象中的title和salary字段的值。
當(dāng)JSON數(shù)據(jù)中存在多層嵌套時(shí),我們可以通過套嵌的方式逐層獲取嵌套的JSONObject對象和JSONArray數(shù)組對象。以下代碼演示了三層JSON嵌套的解析方法。
//定義JSON數(shù)據(jù) String jsonStr = "{\"name\":\"Tom\",\"age\":20,\"job\":{\"title\":\"engineer\",\"salary\":10000,\"projects\":[{\"name\":\"project1\",\"year\":\"2020\"},{\"name\":\"project2\",\"year\":\"2021\"}]}}"; //創(chuàng)建JSON對象 JSONObject obj = new JSONObject(jsonStr); //獲取name和age值 String name = obj.getString("name"); int age = obj.getInt("age"); //獲取job對象 JSONObject jobObj = obj.getJSONObject("job"); //獲取job對象的title和salary值 String title = jobObj.getString("title"); int salary = jobObj.getInt("salary"); //獲取projects數(shù)組 JSONArray projectsArr = jobObj.getJSONArray("projects"); //循環(huán)遍歷projects數(shù)組,獲取數(shù)組中的每個(gè)對象的值 for (int i = 0; i< projectsArr.length(); i++) { JSONObject projectObj = projectsArr.getJSONObject(i); String projectName = projectObj.getString("name"); int projectYear = projectObj.getInt("year"); }
以上代碼中,我們定義的JSON字符串比之前多嵌套了一層,具體解析方式也更加復(fù)雜。我們同樣先通過JSONObject類的構(gòu)造函數(shù)將JSON字符串轉(zhuǎn)換為JSON對象,然后通過getString()和getInt()方法獲取最外層的name和age字段的值。接著我們再獲取到j(luò)ob對象,同樣使用getString()和getInt()方法獲取job對象中的title和salary字段的值。而在這個(gè)job對象中,我們還存在一個(gè)projects數(shù)組,我們用getJSONArray()方法獲取到該數(shù)組對象后,通過循環(huán)遍歷這個(gè)數(shù)組,取出數(shù)組中每個(gè)對象的name和year值。這樣就完成了三層嵌套的JSON數(shù)據(jù)解析操作。