首页 前端知识 HuTool工具使用(JSONUtil JSONObject JSONArray)

HuTool工具使用(JSONUtil JSONObject JSONArray)

2024-05-12 17:05:59 前端知识 前端哥 756 984 我要收藏

maven依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.15</version>
</dependency>

HutoolTest.java

package com.xjz;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.zhwy.pojo.SurfChnMulMin;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;

public class HutoolTest {


    //JSON字符串创建
    @Test
    public void toJsonStr() {
        SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() {
            private static final long serialVersionUID = 1L;

            {
                put("attributes", "a");
                put("b", "b");
                put("c", "c");
            }
        };

        System.out.println(JSONUtil.toJsonStr(sortedMap));
        System.out.println(JSONUtil.toJsonPrettyStr(sortedMap));
    }

    //Json字符串解析
    @Test
    public void parseObj() {
        String html = "{\"name\":\"Something must have been changed since you leave\"}";
        JSONObject jsonObject = JSONUtil.parseObj(html);
        System.out.println(jsonObject.getStr("name"));
    }

    //XML字符串转换成JSON
    @Test
    public void parseFormXml() {
        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"));
        System.out.println(json.get("name"));
    }

    //Json转换为XML
    @Test
    public void toXmlStr() {
        final JSONObject put = JSONUtil.createObj()
                .set("aaa", "您好")
                .set("xjz", "666");

        System.out.println(JSONUtil.toXmlStr(put));
    }

    //JSONObject代表一个JSON中的键值对象,这个对象以大括号包围,每个键值对使用,隔开,键与值使用:隔开,一个JSONObject类似于这样:
    //    {
    //        "key1":"value1",
    //        "key2":"value2"
    //    }

    //创建
    @Test
    public void createObj() {
        JSONObject json1 = JSONUtil.createObj()
                .put("key", "value1")
                .put("key2", "value2");
        JSONObject json2 = new JSONObject()
                .set("key1", "v1")
                .set("key2", "v2");
        System.out.println(json1);
        System.out.println(json2);
    }

    //1. Json字符串解析
    @Test
    public void toStringPretty() {
        String jsonStr = "{\"b\":\"value2\",\"c\":\"value3\",\"a\":\"value1\"}";
        //方法一:使用工具类转换
        JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
        //方法二:new的方式转换
        JSONObject jsonObject2 = new JSONObject(jsonStr);

        //JSON对象转字符串(一行)
        System.out.println(jsonObject2);

        // 也可以美化一下,即显示出带缩进的JSON:
        System.out.println(jsonObject2.toStringPretty());
    }

    //JavaBean解析
    @Test
    public void jsonUtilParseObj() {
        SurfChnMulMin scmm = new SurfChnMulMin();
        scmm.setStationIdC("A00001");
        scmm.setStationName("xjz_2002");

        // false 表示不跳过null值
        JSONObject json = JSONUtil.parseObj(scmm, false);
        System.out.println(json);
        System.out.println(json.toJSONString(5));
        System.out.println(json.toStringPretty());
    }


    //在JSON中,JSONArray代表一个数组,使用中括号包围,每个元素使用逗号隔开。一个JSONArray类似于这样:
    //["value1","value2","value3"]

    //创建
    @Test
    public void createJsonArray() {
        JSONArray array = JSONUtil.createArray();
        JSONArray array2 = new JSONArray();

        array.add("value1");
        array.add("value2");
        array.add("value3");

        //转为JsonArray字符串
        System.out.println(array);
    }

    //从Bean列表解析
    @Test
    public void beanListParse() {
        SurfChnMulMin scmm = new SurfChnMulMin();
        scmm.setStationIdC("A00001");
        scmm.setStationName("xjz_2002");
        SurfChnMulMin scmm2 = new SurfChnMulMin();
        scmm2.setStationIdC("A00001");
        scmm2.setStationName("xjz_2002");

        ArrayList<SurfChnMulMin> list = CollUtil.newArrayList(scmm, scmm2);

//        JSONArray jsonArray = JSONUtil.parseArray(list);
        JSONArray jsonArray = new JSONArray(list);
        System.out.println(jsonArray.getJSONObject(0).getStr("stationName"));
    }

    //从JSON字符串解析
    @Test
    public void toParseArray() {
        String jsonStr = "[\"value1\", \"value2\", \"value3\"]";
        JSONArray array = JSONUtil.parseArray(jsonStr);
        System.out.println("array=" + array);//array=["value1","value2","value3"]
    }

    //转换为bean的List
    @Test
    public void toList() {
        String jsonArr = "[{\"stationIdC\":111,\"stationName\":\"test1\"},{\"stationIdC\":112,\"stationName\":\"test2\"}]";
        JSONArray array = JSONUtil.parseArray(jsonArr);

        System.out.println("array=" + array);
        //array=[{"id":111,"name":"test1"},{"id":112,"name":"test2"}]

        List<SurfChnMulMin> userList = JSONUtil.toList(array, SurfChnMulMin.class);

        // 111
        System.out.println(userList.get(0).getStationIdC());
    }

    //转换为Dict的List
    @Test
    public void parseDictList() {
        String jsonArr = "[{\"id\":111,\"name\":\"test1\"},{\"id\":112,\"name\":\"test2\"}]";
        JSONArray array = JSONUtil.parseArray(jsonArr);

        List<Dict> list = JSONUtil.toList(array, Dict.class);

        // 111
        System.out.println(list.get(0).getInt("id"));
    }

    //转换为数组
    @Test
    public void parseArray() {
        String jsonArr = "[{\"stationIdC\":111,\"stationName\":\"test1\"},{\"stationIdC\":112,\"stationName\":\"test2\"}]";
        JSONArray array = JSONUtil.parseArray(jsonArr);

        SurfChnMulMin[] list = array.toArray(new SurfChnMulMin[0]);
    }

    //Json路径
    @Test
    public void getByPath() {
        String jsonStr = "[{\"id\": \"1\",\"name\": \"a\"},{\"id\": \"2\",\"name\": \"b\"}]";
        final JSONArray jsonArray = JSONUtil.parseArray(jsonStr);

        // b
        System.out.println(jsonArray.getByPath("[1].name"));

    }

}

HuTool 中文文档:https://doc.hutool.cn/pages/json/

转载请注明出处或者链接地址:https://www.qianduange.cn//article/8444.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!