java?hutool工具類處理JSON的使用方法
介紹
JSONUtil是針對(duì)JSONObject和JSONArray的靜態(tài)快捷方法集合,在之前的章節(jié)我們已經(jīng)介紹了一些工具方法,在本章節(jié)我們將做一些補(bǔ)充。
使用
1、JSON字符串創(chuàng)建
JSONUtil.toJsonStr可以將任意對(duì)象(Bean、Map、集合等)直接轉(zhuǎn)換為JSON字符串。 如果對(duì)象是有序的Map等對(duì)象,則轉(zhuǎn)換后的JSON字符串也是有序的。
/** * 轉(zhuǎn)換為JSON字符串 * <p> * 被轉(zhuǎn)為JSON的對(duì)象 * * @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"); } }; //對(duì)象 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對(duì)象 * <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
我們先定義兩個(gè)較為復(fù)雜的Bean(包含泛型)
@Data public class ADT { private List<String> BookingCode; } @Data public class Price { private List<List<ADT>> ADT; } /** * JSON字符串轉(zhuǎn)為實(shí)體類對(duì)象,轉(zhuǎn)換異常將被拋出 * * @param <T> Bean類型 * @param jsonString JSON字符串 * @param beanClass 實(shí)體類對(duì)象 * @return 實(shí)體類對(duì)象 * @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 對(duì)象。JSONUtil.parseArray(jsonStr)
:將 JSON 字符串解析為 JSONArray 數(shù)組對(duì)象。JSONUtil.toJsonStr(obj)
:將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串。
對(duì)象與 JSON 字符串的轉(zhuǎn)換:
JSONUtil.toBean(jsonStr, clazz)
:將 JSON 字符串轉(zhuǎn)換為指定類型的 Java 對(duì)象。JSONUtil.toMap(jsonStr)
:將 JSON 字符串轉(zhuǎn)換為 Map 對(duì)象。JSONUtil.toCamelCaseMap(bean)
:將 Java 對(duì)象轉(zhuǎn)換為駝峰風(fēng)格的 Map 對(duì)象,適用于大部分 JavaBean。
JSON 對(duì)象的操作:
JSONObject.get(key)
:獲取 JSON 對(duì)象中指定 key 的值。JSONObject.put(key, value)
:向 JSON 對(duì)象中添加鍵值對(duì)。JSONObject.containsKey(key)
:判斷 JSON 對(duì)象中是否包含指定的 key。JSONObject.keySet()
:獲取 JSON 對(duì)象中所有鍵的集合。
JSON 數(shù)組的操作:
JSONArray.get(index)
:獲取 JSON 數(shù)組中指定索引的元素。JSONArray.add(value)
:向 JSON 數(shù)組中添加元素。JSONArray.size()
:獲取 JSON 數(shù)組的長(zhǎng)度。JSONArray.iterator()
:獲取 JSON 數(shù)組的迭代器。
其他常用方法:
JSONUtil.parseFromXml(xmlStr)
:將 XML 字符串解析為 JSON 對(duì)象。JSONUtil.toXmlStr(jsonObject)
:將 JSON 對(duì)象轉(zhuǎn)換為 XML 字符串。
總結(jié)
到此這篇關(guān)于java hutool工具類處理JSON的使用方法的文章就介紹到這了,更多相關(guān)java hutool處理JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis調(diào)用SQL?Server存儲(chǔ)過(guò)程的實(shí)現(xiàn)示例
在軟件開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用到存儲(chǔ)過(guò)程,本文就來(lái)介紹一下Mybatis調(diào)用SQL?Server存儲(chǔ)過(guò)程的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Spring?@Bean注解深入分析源碼執(zhí)行過(guò)程
隨著SpringBoot的流行,我們現(xiàn)在更多采用基于注解式的配置從而替換掉了基于XML的配置,所以本篇文章我們主要探討基于注解的@Bean以及和其他注解的使用2023-01-01MyBatis?超詳細(xì)講解動(dòng)態(tài)SQL的實(shí)現(xiàn)
動(dòng)態(tài)?SQL?是?MyBatis?的強(qiáng)大特性之一。如果你使用過(guò)?JDBC?或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語(yǔ)句有多痛苦,例如拼接時(shí)要確保不能忘記添加必要的空格,還要注意去掉列表最后一個(gè)列名的逗號(hào)。利用動(dòng)態(tài)?SQL,可以徹底擺脫這種痛苦2022-03-03java實(shí)現(xiàn)解析Cron時(shí)間表達(dá)式為中文描述
這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)解析Cron時(shí)間表達(dá)式為中文描述,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-11-11IntelliJ IDEA2019 安裝lombok的實(shí)現(xiàn)
這篇文章主要介紹了IntelliJ IDEA2019 安裝lombok的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10詳解SpringBoot中添加@ResponseBody注解會(huì)發(fā)生什么
這篇文章主要介紹了詳解SpringBoot中添加@ResponseBody注解會(huì)發(fā)生什么,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11解決mybatis執(zhí)行SQL語(yǔ)句部分參數(shù)返回NULL問(wèn)題
這篇文章主要介紹了mybatis執(zhí)行SQL語(yǔ)句部分參數(shù)返回NULL問(wèn)題,需要的的朋友參考下吧2017-06-06