11【hutool】hutool-json

2,032 阅读1分钟

该系列文章主要是对 hutool 工具类的介绍,详情可以参考

hutool.cn/docs/#/

hutool-json的核心类只有两个:

  • JSONObject
  • JSONArray 这与其它JSON包是类似的,与此同时,还提供一个JSONUtil工具类用于简化针对JSON的各种操作和转换。

除了核心类,还提供了一些辅助类用于实现特定功能:

  • JSONSupport Bean类继承此对象即可无缝转换为JSON或JSON字符串。同时实现了toString()方法可将当前对象输出为JSON字符串。
  • XML 提供JSON与XML之间的快速转换,同时JSONUtil中有相应静态封装。
  • JSON JSONObject和JSONArray共同实现的接口类,JSONUtil.parse方法默认返回此对象(因为不知道是JSON对象还是JSON数组),然后可以根据实际类型判断后转换对象类型。
    @Test
    public void testBean2Str() {
        User user = new User();
        user.setId("1");
        user.setName("name1");
        String str = JSONUtil.toJsonStr(user);
        Console.log(str);
    }

    @Test
    public void testBean2PrettyStr() {
        User user = new User();
        user.setId("1");
        user.setName("name1");
        String str = JSONUtil.toJsonPrettyStr(user);
        Console.log(str);
    }

    @Test
    public void testStr2Bean() {
        String str = "{\"id\":\"1\",\"name\":\"name1\"}";
        User user = JSONUtil.toBean(str, User.class);
        Console.log(user);
    }

    @Test
    public void testStr2ComplexBean() {
        String str = "{\"name\":\"name1\",\"t\":{\"id\":\"1\",\"name\":\"name1\"}}";
        // 支持泛型
        ComplexBean<User> bean = JSONUtil.toBean(str, new TypeReference<ComplexBean<User>>() {
        }, false);
        Console.log(bean);
    }

    @Test
    public void testJSON2Bean() {
        JSONObject jsonObject = JSONUtil.createObj()
                .set("id", "1")
                .set("name", "name");
        User user = JSONUtil.toBean(jsonObject, User.class);
        Console.log(user);
    }

    @Test
    public void testBean2JSON() {
        User user = new User();
        user.setId("1");
        user.setName("name1");
        JSONObject jsonObject = JSONUtil.parseObj(user);
        Console.log(jsonObject);
    }

    @Test
    public void testStr2JSON() {
        String str = "{\"a\":\"a\",\"b\":\"b\",\"c\":\"c\"}";
        JSONObject jsonObject = JSONUtil.parseObj(str);
        Console.log(jsonObject);
    }

    @Test
    public void testJSON2Str() {
        JSONObject jsonObject = JSONUtil.createObj()
                .set("aaa", "你好")
                .set("键2", "test");
        String str = JSONUtil.toJsonStr(jsonObject);
        Console.log(str);
    }

    @Test
    public void testXML2JSON() {
        String str = "<sfzh>123</sfzh><name>aa</name><gender>1</gender>";
        JSONObject jsonObject = JSONUtil.parseFromXml(str);
        Console.log(jsonObject);
    }

    @Test
    public void testJSON2XML() {
        JSONObject jsonObject = JSONUtil.createObj()
                .set("aaa", "你好")
                .set("键2", "test");
        String str = JSONUtil.toXmlStr(jsonObject);
        Console.log(str);
    }

    @Test
    public void testJSONRead() {
        JSONArray jsonArray = JSONUtil.readJSONArray(FileUtil.file("json/test.json"), CharsetUtil.CHARSET_UTF_8);
        List<User> users = JSONUtil.toList(jsonArray, User.class);
        Console.log(users);
    }