欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java?hutool工具類處理JSON的使用方法

 更新時(shí)間:2024年04月09日 09:20:52   作者:伏加特遇上西柚  
hutool是一個(gè)java基礎(chǔ)工具類,該工具類經(jīng)過(guò)長(zhǎng)期的發(fā)展,API已經(jīng)非常齊全,下面這篇文章主要給大家介紹了關(guān)于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)示例

    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-01
  • Spring?@Bean注解深入分析源碼執(zhí)行過(guò)程

    Spring?@Bean注解深入分析源碼執(zhí)行過(guò)程

    隨著SpringBoot的流行,我們現(xiàn)在更多采用基于注解式的配置從而替換掉了基于XML的配置,所以本篇文章我們主要探討基于注解的@Bean以及和其他注解的使用
    2023-01-01
  • MyBatis?超詳細(xì)講解動(dòng)態(tài)SQL的實(shí)現(xiàn)

    MyBatis?超詳細(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-03
  • 一文搞懂Java的ThreadPoolExecutor原理

    一文搞懂Java的ThreadPoolExecutor原理

    都說(shuō)經(jīng)典的就是好的,這句話放在Java的ThreadPoolExecutor上那是一點(diǎn)都沒(méi)錯(cuò),像現(xiàn)在數(shù)據(jù)庫(kù)連接的池化實(shí)現(xiàn),或者像Tomcat這種WEB服務(wù)器的線程管理,處處都有著ThreadPoolExecutor的影子,本篇文章將結(jié)合源碼實(shí)現(xiàn),對(duì)ThreadPoolExecutor的原理進(jìn)行一個(gè)深入學(xué)習(xí)
    2023-06-06
  • 你知道jdk竟有4個(gè)random嗎

    你知道jdk竟有4個(gè)random嗎

    這篇文章主要給大家介紹了關(guān)于jdk中4個(gè)random的相關(guān)資料,分別是Random、ThreadLocalRandom、SecureRandom以及SplittableRandom,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • java實(shí)現(xiàn)解析Cron時(shí)間表達(dá)式為中文描述

    java實(shí)現(xiàn)解析Cron時(shí)間表達(dá)式為中文描述

    這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)解析Cron時(shí)間表達(dá)式為中文描述,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-11-11
  • IntelliJ IDEA2019 安裝lombok的實(shí)現(xiàn)

    IntelliJ 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
  • Java文件上傳下載、郵件收發(fā)實(shí)例代碼

    Java文件上傳下載、郵件收發(fā)實(shí)例代碼

    這篇文章主要介紹了Java文件上傳下載、郵件收發(fā)實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 詳解SpringBoot中添加@ResponseBody注解會(huì)發(fā)生什么

    詳解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)題

    這篇文章主要介紹了mybatis執(zhí)行SQL語(yǔ)句部分參數(shù)返回NULL問(wèn)題,需要的的朋友參考下吧
    2017-06-06

最新評(píng)論