java?hutool工具類處理JSON的使用方法
介紹
JSONUtil是針對JSONObject和JSONArray的靜態(tài)快捷方法集合,在之前的章節(jié)我們已經(jīng)介紹了一些工具方法,在本章節(jié)我們將做一些補充。
使用
1、JSON字符串創(chuàng)建
JSONUtil.toJsonStr可以將任意對象(Bean、Map、集合等)直接轉(zhuǎn)換為JSON字符串。 如果對象是有序的Map等對象,則轉(zhuǎn)換后的JSON字符串也是有序的。
/** * 轉(zhuǎn)換為JSON字符串 * <p> * 被轉(zhuǎn)為JSON的對象 * * @return JSON字符串 */ @Test void toJsonStrTest() { //map SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() { private static final long serialVersionUID = 1L; { put("attributes", "a"); put("b", "b"); put("c", "c"); } }; //對象 Student beanString = new Student(1, 1, 1, "張三"); //集合 List<Student> list = new ArrayList<>(); list.add(new Student(1, 1, 1, "張三")); list.add(new Student(1, 1, 2, "李四")); list.add(new Student(1, 1, 3, "王五")); System.out.println("JSONUtil.toJsonStr(beanString) = " + JSONUtil.toJsonStr(beanString)); System.out.println("JSONUtil.toJsonStr(sortedMap) = " + JSONUtil.toJsonStr(sortedMap)); System.out.println("JSONUtil.toJsonStr(list) = " + JSONUtil.toJsonStr(list)); }
結(jié)果
JSONUtil.toJsonStr(beanString) = {"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"張三"}
JSONUtil.toJsonStr(sortedMap) = {"attributes":"a","b":"b","c":"c"}
JSONUtil.toJsonStr(list) = [{"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"張三"},
{"gradeId":0,"studentId":2,"termId":1,"classId":1,"name":"李四"},
{"gradeId":0,"studentId":3,"termId":1,"classId":1,"name":"王五"}]
如果我們想獲得格式化后的JSON,則:
JSONUtil.toJsonPrettyStr(object); System.out.println("JSONUtil.toJsonPrettyStr(sortedMap) = " + JSONUtil.toJsonPrettyStr(sortedMap));
結(jié)果
JSONUtil.toJsonPrettyStr(sortedMap) = {
"attributes": "a",
"b": "b",
"c": "c"
}
2、JSON字符串解析
/** * JSON字符串轉(zhuǎn)JSONObject對象 * <p> * JSON字符串 * * @return JSONObject */ @Test void Test() { String html = "{\"name\":\"Something must have been changed since you leave\"}"; JSONObject jsonObject = JSONUtil.parseObj(html); System.out.println("jsonObject.getStr(\"name\") = " + jsonObject.getStr("name")); }
結(jié)果
jsonObject.getStr("name") = Something must have been changed since you leave
3、XML字符串轉(zhuǎn)換為JSON
/** * XML字符串轉(zhuǎn)為JSONObject * * XML字符串 * @return JSONObject */ @Test void parseFromXmlTest() { String s = "<sfzh>123</sfzh><sfz>456</sfz><name>aa</name><gender>1</gender>"; JSONObject json = JSONUtil.parseFromXml(s); System.out.println("json.get(\"sfzh\") = " + json.get("sfzh")); System.out.println("json.get(\"name\") = " + json.get("name")); }
結(jié)果
json.get("sfzh") = 123
json.get("name") = aa
4、JSON轉(zhuǎn)換為XML
/** * 轉(zhuǎn)換為XML字符串 * * @param json JSON * @return XML字符串 */ @Test void toXmlStrTest() { final JSONObject put = JSONUtil.createObj() .set("aaa", "你好") .set("鍵2", "test"); // <aaa>你好</aaa><鍵2>test</鍵2> final String s = JSONUtil.toXmlStr(put); System.out.println("s = " + s); }
結(jié)果
s = <aaa>你好</aaa><鍵2>test</鍵2>
5、 JSON轉(zhuǎn)Bean
我們先定義兩個較為復雜的Bean(包含泛型)
@Data public class ADT { private List<String> BookingCode; } @Data public class Price { private List<List<ADT>> ADT; } /** * JSON字符串轉(zhuǎn)為實體類對象,轉(zhuǎn)換異常將被拋出 * * @param <T> Bean類型 * @param jsonString JSON字符串 * @param beanClass 實體類對象 * @return 實體類對象 * @since 3.1.2 */ @Test void toBeanTest() { String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}"; Price price = JSONUtil.toBean(json, Price.class); System.out.println("price = " + price); }
以下是 Hutool 中關(guān)于 JSON 的常用方法:
JSON 字符串的解析與生成:
JSONUtil.parseObj(jsonStr)
:將 JSON 字符串解析為 JSONObject 對象。JSONUtil.parseArray(jsonStr)
:將 JSON 字符串解析為 JSONArray 數(shù)組對象。JSONUtil.toJsonStr(obj)
:將 Java 對象轉(zhuǎn)換為 JSON 字符串。
對象與 JSON 字符串的轉(zhuǎn)換:
JSONUtil.toBean(jsonStr, clazz)
:將 JSON 字符串轉(zhuǎn)換為指定類型的 Java 對象。JSONUtil.toMap(jsonStr)
:將 JSON 字符串轉(zhuǎn)換為 Map 對象。JSONUtil.toCamelCaseMap(bean)
:將 Java 對象轉(zhuǎn)換為駝峰風格的 Map 對象,適用于大部分 JavaBean。
JSON 對象的操作:
JSONObject.get(key)
:獲取 JSON 對象中指定 key 的值。JSONObject.put(key, value)
:向 JSON 對象中添加鍵值對。JSONObject.containsKey(key)
:判斷 JSON 對象中是否包含指定的 key。JSONObject.keySet()
:獲取 JSON 對象中所有鍵的集合。
JSON 數(shù)組的操作:
JSONArray.get(index)
:獲取 JSON 數(shù)組中指定索引的元素。JSONArray.add(value)
:向 JSON 數(shù)組中添加元素。JSONArray.size()
:獲取 JSON 數(shù)組的長度。JSONArray.iterator()
:獲取 JSON 數(shù)組的迭代器。
其他常用方法:
JSONUtil.parseFromXml(xmlStr)
:將 XML 字符串解析為 JSON 對象。JSONUtil.toXmlStr(jsonObject)
:將 JSON 對象轉(zhuǎn)換為 XML 字符串。
總結(jié)
到此這篇關(guān)于java hutool工具類處理JSON的使用方法的文章就介紹到這了,更多相關(guān)java hutool處理JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis調(diào)用SQL?Server存儲過程的實現(xiàn)示例
在軟件開發(fā)過程中,經(jīng)常會使用到存儲過程,本文就來介紹一下Mybatis調(diào)用SQL?Server存儲過程的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-01-01MyBatis?超詳細講解動態(tài)SQL的實現(xiàn)
動態(tài)?SQL?是?MyBatis?的強大特性之一。如果你使用過?JDBC?或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài)?SQL,可以徹底擺脫這種痛苦2022-03-03IntelliJ IDEA2019 安裝lombok的實現(xiàn)
這篇文章主要介紹了IntelliJ IDEA2019 安裝lombok的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么
這篇文章主要介紹了詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11解決mybatis執(zhí)行SQL語句部分參數(shù)返回NULL問題
這篇文章主要介紹了mybatis執(zhí)行SQL語句部分參數(shù)返回NULL問題,需要的的朋友參考下吧2017-06-06