Java使用JSON數據格式進行前后端交互是非常常見的,如何將JSON數據轉換為Java實體類也是很重要的一件事情。本文將介紹使用Java的JSON工具庫將JSON字符串轉換為Java實體類的方法。
首先需要明確的是,JSON格式的數據與Java實體類的定義是有區別的,必須要進行轉換。我們可以借助Java的JSON工具庫來完成這個轉換操作。常用的JSON工具庫有Gson、Fastjson、Jackson等。
接下來以Gson作為例子,介紹如何將JSON字符串轉換為Java實體類:
Gson gson = new Gson(); //創建Gson對象 String json = "{\"name\":\"張三\",\"age\":18}"; //待轉換的JSON字符串 Person person = gson.fromJson(json, Person.class); //將JSON字符串轉換為Person對象 System.out.println(person.getName()); //輸出結果:張三 System.out.println(person.getAge()); //輸出結果:18
上述代碼的執行結果為輸出Person對象的姓名和年齡。其中fromJson()方法將JSON字符串轉換為Java實體類對象,傳入的第一個參數是JSON字符串,第二個參數是Java實體類的Class類型。而Java實體類需要滿足以下幾個要求:
- 必須是公共類(public class)
- 必須有無參構造器
- 成員屬性必須有get/set方法
對于復雜的JSON數據結構,如多層嵌套或者數組對象,可以通過定義多個Java實體類來完成轉換操作。需要將JSONObject轉為Java實體類,可以使用fromJson()方法;將JSONArray轉為List集合,可以使用TypeToken來指定集合中元素的類型:
Gson gson = new Gson(); //創建Gson對象 String json = "{\"name\":\"張三\",\"schools\":[{\"name\":\"清華大學\",\"location\":\"北京\"},{\"name\":\"復旦大學\",\"location\":\"上海\"}]}"; //待轉換的JSON字符串 Person person = gson.fromJson(json, Person.class); //將JSON字符串轉換為Person對象 ListschoolsList = gson.fromJson(gson.toJson(person.getSchools()), new TypeToken >() {}.getType()); //將JSONArray轉換為List集合 System.out.println(person.getName()); //輸出結果:張三 System.out.println(schoolsList.get(0).getName()); //輸出結果:清華大學 System.out.println(schoolsList.get(1).getName()); //輸出結果:復旦大學
以上代碼的執行結果為輸出Person對象中的姓名屬性以及School對象中的學校名稱屬性。可以看出通過Gson這種JSON工具庫很方便地進行JSON格式數據與Java實體類的轉換操作。