一、簡介
hutool是一個Java工具庫,擁有大量的工具方法,能夠讓Java開發變得簡單而快速。其中,對象轉json是hutool提供的一個功能強大的工具。
在Java開發中,經常需要進行對象之間的轉換,其中,將Java對象轉換為json字符串是一種普遍而重要的操作。在實際開發中,我們需要將Java對象序列化為json字符串進行前後端傳輸、存儲等操作。hutool提供了方便易用、效率高的對象轉json工具類,可以滿足我們的常用需求。
二、快速上手
使用hutool的對象轉json非常簡單,只需要引入相關的jar包,在代碼中導入相關類並調用方法即可。
// 導入相關類 import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; // 創建Java對象 class User { private String name; private int age; public User() { } public User(String name, int age) { this.name = name; this.age = age; } // 省略getter和setter } // 將Java對象轉換為json字符串 User user = new User("張三", 20); JSONObject jsonObject = JSONUtil.parseObj(user); System.out.println(jsonObject); // 輸出: {"age":20,"name":"張三"}
上述代碼中,我們創建了一個User對象,通過JSONUtil.parseObj方法將其轉換為JSONObject類型的對象,並輸出其字符串形式。可以看到轉換後的json字符串與Java對象對應屬性的順序並不相同,這是因為JSONObject的內部實現採用了哈希表結構,存儲時要按照哈希值排序。
三、常用方法
1. 對象轉換為JSON字符串
對象轉json字符串是hutool對象轉json的最基本功能。使用JSONUtil.parse(obj)方法,可以將Java對象轉換為JSON字符串。
// 將Java對象轉換為json字符串 User user = new User("張三", 20); String jsonStr = JSONUtil.toJsonStr(user); System.out.println(jsonStr); // 輸出: {"age":20,"name":"張三"}
上述代碼中,我們使用JSONUtil.toJsonStr(user)方法將Java對象轉化為json字符串。除此之外,JSONUtil提供了對象轉json的多種方法。例如,使用JSONUtil.parseFromBean(model)方法可以將實現Serializable接口的Java Bean對象轉化為JSONObject類型。
2. JSON字符串轉換為對象
在Java開發中,我們也需要將json字符串快速地反序列化為Java對象。使用JSONUtil.toBean(json, class)方法,可以輕鬆地將json字符串轉換為Java對象。
// 將json字符串轉換為Java對象 String jsonStr = "{\"name\":\"張三\",\"age\":20}"; User user = JSONUtil.toBean(jsonStr, User.class); System.out.println(user.getName()); System.out.println(user.getAge()); // 輸出: 張三 20
上述代碼中,我們使用JSONUtil.toBean(json, class)方法將json字符串轉化為Java對象。需要注意的是,該方法的第二個參數是目標Java類型的Class對象。
3. JSON字符串格式化
對於json字符串的可讀性和可維護性,我們常常需要對其進行格式化。使用JSONObject.toString(i)方法,可以將json字符串按照指定的縮進等級進行格式化。
// 格式化json字符串 String jsonStr = "{\"name\":\"張三\",\"age\":20}"; JSONObject jsonObject = JSONUtil.parseObj(jsonStr); String jsonPretty = jsonObject.toStringPretty(); System.out.println(jsonPretty); /* 輸出: { "age": 20, "name": "張三" } */
上述代碼中,我們使用JSONObject.toStringPretty()方法將json字符串格式化後輸出。需要注意的是,如果對json字符串進行格式化,則會增加額外的空間,增加數據傳輸量。
4. Json字符串排序
hutool中也提供了Json排序的功能。JSONUtil.sort() 方法支持對複雜Json數據的排序操作。
// json字符串排序 String jsonStr = "{\"name\":\"張三\",\"age\":20}"; JSONObject jsonObject = JSONUtil.parseObj(jsonStr); JSONObject sortObj = JSONUtil.sort(jsonObject); System.out.println(sortObj); // 輸出: {"age":20,"name":"張三"}
上述代碼中,我們使用JSONUtil.sort(jsonObject)方法對json字符串進行排序,輸出的結果按照json字符串的鍵名從小到大排序。
四、總結
hutool提供了方便易用、效率高的對象轉json類庫,能夠快捷地完成對象和json字符串之間的轉換。在實際開發中,我們可以根據具體需求選擇不同的方法,快速地實現json和Java對象的相互轉換,提高開發效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288846.html