Hutool糊涂包JSON相关方法汇总

news2024/9/26 3:29:52

目录

1. JSON 对象 (JSONObject) 的创建

2. 向 JSONObject 添加键值对

3. 从 JSONObject 获取值

4. JSON 对象与字符串之间的转换

5. JSON 对象与 Java Bean(POJO)之间的转换

6. JSON 数组 (JSONArray) 的使用

7. JSON 数组与 Java List 之间的转换

8. 判断 JSON 对象中是否包含某个键

9. 删除 JSON 对象中的键值对

10. JSON 字符串与 Map 之间的转换

11. JSON 数组与 Java 数组之间的转换

12. 深度克隆 JSON 对象

13. JSON 字符串与 JSONArray 之间的转换

14. 将 JSON 对象转换为 JSONArray

15. 从 JSONArray 中提取 JSONObject

16. 将 JSONArray 转换为 List


1. JSON 对象 (JSONObject) 的创建

    @Test
    //JSON 对象 (JSONObject) 的创建
    public void method_1() {
        // 从字符串创建JSONObject
        String jsonString = "{\"姓名\":\"张三\", \"年龄\":25}";
        JSONObject jsonObject = JSONUtil.parseObj(jsonString);

        // 输出漂亮的格式化JSON字符串
        System.out.println(jsonObject.toStringPretty());
    }

 

2. 向 JSONObject 添加键值对

    @Test
    //向 JSONObject 添加键值对
    public void method_2() {
        // 创建空的JSONObject
        JSONObject jsonObject = JSONUtil.createObj();

        // 添加键值对
        jsonObject.set("姓名", "张三");
        jsonObject.set("年龄", 21);
        jsonObject.set("是否学生", true);

        System.out.println(jsonObject.toStringPretty());
    }

3. 从 JSONObject 获取值

    @Test
    //从 JSONObject 获取值
    public void method_3() {
        String jsonString = "{\"姓名\":\"张三\", \"年龄\":25, \"是否学生\":true}";
        JSONObject jsonObject = JSONUtil.parseObj(jsonString);

        // 获取值
        String name = jsonObject.getStr("姓名");
        int age = jsonObject.getInt("年龄");
        boolean isStudent = jsonObject.getBool("是否学生");

        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("是否学生: " + isStudent);
    }

 

4. JSON 对象与字符串之间的转换

    @Test
    //JSON 对象与字符串之间的转换
    public void method_4() {
        // JSON 字符串 -> JSON 对象
        String jsonString = "{\"姓名\":\"张三\", \"年龄\":25}";
        JSONObject jsonObject = JSONUtil.parseObj(jsonString);

        // JSON 对象 -> JSON 字符串
        String jsonStr = jsonObject.toStringPretty();
        System.out.println(jsonStr);
    }

 

5. JSON 对象与 Java Bean(POJO)之间的转换

@Test
    //JSON 对象与 Java Bean(POJO)之间的转换
    public void method_5() {
        // Java Bean
        User user = new User("张三", 25, true);

        // Java Bean -> JSON 对象
        JSONObject jsonObject = JSONUtil.parseObj(user);
        System.out.println(jsonObject.toStringPretty());

        // JSON 对象 -> Java Bean
        User user2 = JSONUtil.toBean(jsonObject, User.class);
        System.out.println(user2);
    }

 

6. JSON 数组 (JSONArray) 的使用

    @Test
    //JSON 数组 (JSONArray) 的使用
    public void method_6() {
        // 创建JSON数组
        JSONArray jsonArray = JSONUtil.createArray();

        // 添加JSON对象到数组
        jsonArray.add(JSONUtil.createObj().set("姓名", "张三").set("年龄", 25));
        jsonArray.add(JSONUtil.createObj().set("姓名", "李四").set("年龄", 30));

        // 遍历JSONArray
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            System.out.println(jsonObject.toStringPretty());
        }
    }

 

7. JSON 数组与 Java List 之间的转换

    @Test
    //JSON 数组与 Java List 之间的转换
    public void method_7() {
        // JSON 字符串 -> JSON 数组
        String jsonString = "[{\"name\":\"张三\", \"age\":25}, {\"name\":\"李四\", \"age\":30}]";
        JSONArray jsonArray = JSONUtil.parseArray(jsonString);

        // JSON 数组 -> List<Java Bean>
        List<User> userList = JSONUtil.toList(jsonArray, User.class);
        System.out.println(userList);

        // List<Java Bean> -> JSON 数组
        JSONArray jsonArrayFromList = JSONUtil.parseArray(userList);
        System.out.println(jsonArrayFromList.toStringPretty());
    }

 

8. 判断 JSON 对象中是否包含某个键

    @Test
    //判断 JSON 对象中是否包含某个键
    public void method_8() {
        String jsonString = "{\"姓名\":\"张三\", \"年龄\":25}";
        JSONObject jsonObject = JSONUtil.parseObj(jsonString);

        // 检查是否包含某个键
        if (jsonObject.containsKey("姓名")) {
            System.out.println("姓名是: " + jsonObject.getStr("姓名"));
        } else {
            System.out.println("未找到姓名");
        }
    }

9. 删除 JSON 对象中的键值对

    @Test
    //删除 JSON 对象中的键值对
    public void method_9() {
        JSONObject jsonObject = JSONUtil.createObj();
        jsonObject.set("姓名", "张三");
        jsonObject.set("年龄", 25);

        // 删除键值对
        jsonObject.remove("年龄");

        System.out.println(jsonObject.toStringPretty());
    }

10. JSON 字符串与 Map 之间的转换

    @Test
    //JSON 字符串与 Map 之间的转换
    public void method_10() {
        // 创建一个 Map
        Map<String, Object> map = new HashMap<>();
        map.put("姓名", "张三");
        map.put("年龄", 25);
        map.put("是否学生", true);

        // Map -> JSON 字符串
        String jsonStr = JSONUtil.toJsonStr(map);
        System.out.println("JSON 字符串: " + jsonStr);

        // JSON 字符串 -> Map
        Map<String, Object> map2 = JSONUtil.toBean(jsonStr, Map.class);
        System.out.println("由 JSON 字符串转换的 Map: " + map2);
    }

 

11. JSON 数组与 Java 数组之间的转换

    @Test
    //JSON 数组与 Java 数组之间的转换
    public void method_11() {
        // JSON 字符串 -> JSONArray
        String jsonString = "[\"张三\", \"李四\", \"王五\"]";
        JSONArray jsonArray = JSONUtil.parseArray(jsonString);

        // JSONArray -> Java 数组
        String[] namesArray = jsonArray.toArray(new String[0]);
        for (String name : namesArray) {
            System.out.println(name);
        }

        // Java 数组 -> JSON 字符串
        JSONArray jsonArrayFromNamesArray = JSONUtil.parseArray(namesArray);
        System.out.println("JSON 数组: " + jsonArrayFromNamesArray.toStringPretty());
    }

12. 深度克隆 JSON 对象

    @Test
    //深度克隆 JSON 对象
    public void method_12() {
        JSONObject jsonObject = JSONUtil.createObj()
                .set("姓名", "张三")
                .set("年龄", 25);

        // 深度克隆 JSON 对象
        JSONObject clonedJsonObject = JSONUtil.parseObj(JSONUtil.toJsonStr(jsonObject));

        // 修改原始对象
        jsonObject.set("姓名", "李四");

        // 输出克隆对象
        System.out.println("克隆后的 JSON 对象: " + clonedJsonObject.toStringPretty());
        System.out.println("原始 JSON 对象: " + jsonObject.toStringPretty());
    }

 

13. JSON 字符串与 JSONArray 之间的转换

    @Test
    //JSON 字符串与 JSONArray 之间的转换
    public void method_13() {
        // JSON 字符串 -> JSONArray
        String jsonString = "[{\"姓名\":\"张三\", \"年龄\":25}, {\"姓名\":\"李四\", \"年龄\":30}]";
        JSONArray jsonArray = JSONUtil.parseArray(jsonString);

        // 遍历 JSON 数组
        for (int i = 0; i < jsonArray.size(); i++) {
            System.out.println(jsonArray.getJSONObject(i).toStringPretty());
        }

        // JSONArray -> JSON 字符串
        String jsonArrayStr = jsonArray.toStringPretty();
        System.out.println("JSON 数组字符串: " + jsonArrayStr);
    }

 

14. 将 JSON 对象转换为 JSONArray

    @Test
    //将 JSON 对象转换为 JSONArray
    public void method_14() {
        // 创建一个 JSON 对象
        JSONObject jsonObject = JSONUtil.createObj()
                .set("姓名", "张三")
                .set("年龄", 25);

        // 将 JSON 对象转换为 JSONArray
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(jsonObject);

        System.out.println("JSON 数组: " + jsonArray.toStringPretty());
    }

15. 从 JSONArray 中提取 JSONObject

    @Test
    //从 JSONArray 中提取 JSONObject
    public void method_15() {
        // 创建一个 JSON 数组
        String jsonString = "[{\"姓名\":\"张三\", \"年龄\":25}, {\"姓名\":\"李四\", \"年龄\":30}]";
        JSONArray jsonArray = JSONUtil.parseArray(jsonString);

        // 从 JSON 数组中提取第一个 JSON 对象
        JSONObject firstJsonObject = jsonArray.getJSONObject(0);
        System.out.println("第一个 JSON 对象: " + firstJsonObject.toStringPretty());
    }

16. 将 JSONArray 转换为 List

    @Test
    //将 JSONArray 转换为 List
    public void method_16() {
        // JSON 字符串 -> JSONArray
        String jsonString = "[{\"姓名\":\"张三\", \"年龄\":25}, {\"姓名\":\"李四\", \"年龄\":30}]";
        JSONArray jsonArray = JSONUtil.parseArray(jsonString);

        // JSONArray -> List<JSONObject>
        List<Object> list = JSONUtil.toList(jsonArray, Object.class);
        System.out.println("从 JSON 数组转换的 List: " + list);

        // List<JSONObject> -> JSONArray
        JSONArray jsonArrayFromList = JSONUtil.parseArray(list);
        System.out.println("从 List 转换的 JSON 数组: " + jsonArrayFromList.toStringPretty());
    }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity的UI设计

目录 创建和布局 布局与交互 性能优化 最佳实践 学习资源 Unity UI Toolkit与uGUI和IMGUI之间的具体区别和适用场景是什么&#xff1f; Unity UI Toolkit uGUI IMGUI 如何在Unity中实现响应式UI设计以适应不同设备尺寸&#xff1f; Unity UI性能优化的最新技术和方法…

8.MySQL知识巩固-牛客网练习题

目录 SQL228 批量插入数据 描述 SQL202 找出所有员工当前薪水salary情况 描述 示例1 SQL195 查找最晚入职员工的所有信息描述 示例1 SQL196 查找入职员工时间排名倒数第三的员工所有信息描述 SQL201查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t 描述 SQL…

后端Web之数据库多表设计

1.概述 项目开发中,在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系,基本上分为三种:一对多、多对多、一对一。 数据库的多表设计是关…

JavaWeb——MVC架构模式

一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 &#xff0c;它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户…

字符串专题——字符串相乘

1、题目解析 2、算法解析 1、解法一 使用模拟的方法&#xff1a;模拟小学的列竖式运算 细节1&#xff1a;高位相乘的时候要补上“0” 细节2&#xff1a;处理前导“0” 细节3&#xff1a;注意计算结果的顺序 2、解法二 对比解法一做优化->无进位相乘然后相加&#xff0…

Huawei Matebook e 2022 安装 archlinux 双系统

本文同步发布于我的网站 安装之前 wifi 名称修改为英文数字的&#xff0c;以防之后没法联网 准备好 U 盘并使用 GPT 分区表写入最新的 arch 镜像。 基础安装 开机按 F2 进入 UEFI/BIOS 设置&#xff0c;将 Secure Boot&#xff08;安全启动&#xff09;关闭&#xff0c;按…

AI学习记录 - transformers 的 linear 词映射层的详细分析, CrossEntropyLoss 函数解析

创作不易&#xff0c;有用的话点个赞。。。。。。 1. 假设条件 词汇表&#xff1a;假设词汇表包含四个词汇&#xff1a;[token_0, token_1, token_2, token_3]。 模型的输出概率分布&#xff1a;模型的输出经过 Softmax 转换后&#xff0c;得到概率分布&#xff1a;[0.1,0.5,…

JavaScript - Api学习 Day1(WebApi、操作DOM对象)

应用编程接口 (API) 是编程语言中提供的结构&#xff0c;允许开发者更轻松地创建复杂的功能。、 webapi 是一套 操作网页内容(DOM) 与 浏览器窗口(BOM) 的对象Js由ECMAScript、DOM、BOM三个部分组成。 文章目录 零、前言0.1 变量声明 壹、WebAPI的认识1.1 作用1.2 什么是DOM1…

【AI大模型】解锁AI智能:从注意力机制到Transformer,再到BERT与GPT的较量

文章目录 前言一、揭秘注意力机制&#xff1a;AI的焦点如何塑造智能1.什么是注意力机制&#xff1f;2.为什么需要注意力机制&#xff1f; 二、变革先锋&#xff1a;Transformer的突破与影响力1.什么是Transformer&#xff1f;2.为什么Transformer如此重要&#xff1f; 三、路径…

《给所有人的生成式 AI 课》学习笔记(一)

前言 本文是吴恩达&#xff08;Andrew Ng&#xff09;的视频课程《Generative AI for Everyone》&#xff08;给所有人的生成式 AI 课&#xff09;的学习笔记。由于原课程为全英文视频课程&#xff08;时长约 3 个小时&#xff09;&#xff0c;且国内访问较慢&#xff0c;阅读…

零基础转行学网络安全怎么样?

在当今数字化飞速发展的时代&#xff0c;网络安全已成为备受瞩目的领域。那么&#xff0c;对于零基础的人来说&#xff0c;转行学习网络安全究竟怎么样呢? 网络安全行业正处于蓬勃发展的阶段。随着互联网的普及和信息技术的不断进步&#xff0c;网络安全问题日益凸显。政企单位…

本地私有化部署PDF处理神器Stirling PDF并实现无公网IP远程在线访问

文章目录 前言1. 安装Docker2. 本地安装部署StirlingPDF3. Stirling-PDF功能介绍4. 安装cpolar内网穿透5. 固定Stirling-PDF公网地址 前言 本篇文章我们将在Linux上使用Docker在本地部署一个开源的PDF工具——Stirling PDF&#xff0c;并且结合cpolar的内网穿透实现公网随时随…

文心一言 VS 讯飞星火 VS chatgpt (328)-- 算法导论22.5 4题

四、证明&#xff1a;对于任意有向图 G G G来说&#xff0c; ( ( G T ) S C C ) T G S C C ((G^T)^{SCC})^TG^{SCC} ((GT)SCC)TGSCC。也就是说&#xff0c;转置图 G T G^T GT的分量图的转置与图 G G G的分量图相同。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1…

葡萄叶片病虫害数据集。葡萄数据集。葡萄病虫害数据集。

葡萄叶片病虫害数据集。葡萄数据集。葡萄病虫害数据集。 数据集有两种规格&#xff0c;请仔细阅读下面信息以免拍错 [1]规格一&#xff1a;适用于分类任务的数据集&#xff0c;标准的ImageNet数据集格式。注意不是txt格式的更不是xml格式的。数据集已经按照train、val划分好&am…

上海亚商投顾:沪指窄幅震荡 华为海思、猴痘概念股集体爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天窄幅震荡&#xff0c;三大指数涨跌不一。华为海思概念股持续爆发&#xff0c;世纪鼎利、天邑股份、汇…

ProGrad:Prompt-aligned Gradient for Prompt Tuning

文章汇总 存在的问题 问题1 如图(a),(b)&#xff1a;CoOp随着训练的继续&#xff0c;泛化能力可能会下降&#xff0c;甚至低于zero-shot基线。 如图©,(d)&#xff1a;在shot比较小的情况&#xff0c;即数据量比较少的情况(1-shot,2-shot)&#xff0c;CoOp的性能可能还不…

和鲸携手山东大学数字人文实验室,推动新文科与人工智能融合发展

为深入推进产教融合与校企合作&#xff0c;推动人工智能在人文学科中的广泛应用与深入发展&#xff0c;8 月 15 日&#xff0c;山东大学数字人文实验室与和鲸科技 101 计划推进会暨新文科人工智能实验室标杆案例打造讨论会于威海顺利召开。山东大学数字人文实验室副主任陈建红、…

基于Docker部署最新版本Jenkins

一、创建jenkins挂载路径 mkdir /var/jenkins_home chmod 777 /var/jenkins_home二、运行Jenkins最新lts镜像 docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home --restartalways jenkins/jenkins:latest将/var/jenkins_ho…

若依小程序使用及遇到的问题

1、首先去官网拉取小程序代码&#xff0c;从HBuildx运行到小程序 这个时候项目起来了&#xff0c;但是小程序发生了报错&#xff1b; 解决方法 在 project.config.json 新增指定 app.json 路径 ★一定要有 unpackage文件夹 如果没有的需要到HBuilder X 编译一下&#xff0c;编…

一文说清楚数据集成中的流处理与批处理的区别

流数据处理和批数据处理之间的区别主要在于数据的处理方式、时间性、架构设计和适用场景。虽然批处理系统和流处理系统都可以处理数据&#xff0c;但它们处理数据的方式和目的不同&#xff0c;以我们来对“流数据处理”和“批数据处理”进行差异分析。 1. 流数据处理 vs. 批数…