一、簡介
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
微信掃一掃
支付寶掃一掃