【主流技术】日常工作中关于 JSON 转换的经验大全(Java)

这篇具有很好参考价值的文章主要介绍了【主流技术】日常工作中关于 JSON 转换的经验大全(Java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 前言
  • 一、JSON 回顾
    • 1.1结构形式
  • 二、其它类型 -> JSON相关
    • 2.1 JavaBean 转 JsonObject
    • 2.2 JavaBean 转 Json 字符串
    • 2.3 List 转 JsonArray
    • 2.4 List 转Json 字符串
    • 2.5Map 转 Json 字符串
  • 三、JSON 相关 -> 其它类型
    • 3.1 Json 字符串转 JavaBean
    • 3.2 Json 字符串转 JsonObject
    • 3.3 Json 字符串转 List
    • 3.4Json字符串转Map
  • 四、Json 相关互转
    • 4.1 Json 数组字符串转 JsonArray
    • 4.2 JsonObject 转 Json字符串
  • 五、文章小结

前言

JSON 是 JavaScript 数据类型中的一个子集,目前主流的浏览器都使用了通用的 JavaScript 引擎组件,所以在解析 JSON 格式时具有良好的兼容性。这便是 “JavaScript Object Notation”(缩写为 JSON )诞生的由来。

本文按照我们的输入和输出结果类型进行分类,包括从其它类型转换到 JSON 相关,以及从 JSON 相关转换到其它类型这两大类。

注:以下都是基于阿里的 fastjson 来讲解操作的。

fastjson 可以将 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web 输出、Android 客户端等多种应用场景。

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

一、JSON 回顾

在开始分享文章的主要内容前,我们可以先回顾一下关于 JSON 的基础知识。

1.1结构形式

JSON 有键值对形式和数组形式这2种结构形式。

以下这个例子就是键值对类型的:

{
    "playerInfo": {
        "playerName": "Alex",
        "playerAge": 18
    },
    "activityId": "871047729944117248",
    "activityType": "OA",
    "awardId": "886982449056579584",
    "awardName": "OA测试",
    "stageId": "816982449034752351",
    "roundId": "808657473445768946",
    "noticeTypes": "APP"
}

这种结构的 JSON 数据规则是:一个无序的 "key" : "value" 集合,一个 JSON 对象以 { 左括号开始,以 } 右括号结束。每个 "key" 后跟一个英文的 : 冒号,每个"key" : "value"之间使用英文的 , 逗号进行分隔。而每个 JSON 对象是可以嵌套的。

那 JSON 的数组形式又是怎么样的呢?下面同样再举一个例子:

{
    "data": {
        "content": [
            {
                "id": "926160574061371392",
                "status": "PROGRESSING",
                "updateContent": "测试一下",
                "version": "10.6.0",
                "createTime": "2023-10-31 17:11:28"
            },
            {
                "id": "926160574061371326",
                "status": "CANCELED",
                "updateContent": "测试测试",
                "version": "123.0",
                "createTime": "2023-10-31 17:11:28"
            }
        ]
    },
    "code": 200,
    "msg": "成功",
    "success": true
}

数组形式的 JSON 数据就是值(value)的有序集合。一个数组以 [ 左中括号开始, ] 右中括号结束。值之间使用 , 逗号分隔。


二、其它类型 -> JSON相关

这里的其它类型,包括 Java 对象、数组、String 字符串、泛型的 以及 Object 对象等;JSON相关表示 Json 对象、Json 字符串等。

2.1 JavaBean 转 JsonObject

实体类如下:

@Data
@EqualsAndHashCode(callSuper = true)//自动生成属性的 equals() 和 hashCode()方法,同时声明允许使用用父类的属性和方法
public class Computer extends BaseEntity {
    /**
     * 中央处理器
     */
    private String cpu;
    /**
     * 内存
     */
    private String memory;
    /**
     * GPU
     */
    private String gpu;
    /**
     * 固态硬盘
     */
    private String ssd;
}

实现示例:

    /**
     * JavaBean 转 JsonObject
     */
    @Test
    public void javaBeanToJsonObject(){
        Computer computer = new Computer();
        computer.setCpu("r7-4800h");
        computer.setGpu("RTX-3060");
        computer.setSsd("512GB");
        computer.setMemory("32GB");
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(computer);
        log.info("------结果内容:{} 类型为:{}------", jsonObject, jsonObject.getClass());
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
JavaBean 转 JsonObject

2.2 JavaBean 转 Json 字符串

实现示例:

    /**
     * JavaBean 转 Json 字符串
     */
    @Test
    public void javaBeanToJsonString(){
        Computer computer = new Computer();
        computer.setCpu("r7-4800h");
        computer.setGpu("RTX-3060");
        computer.setSsd("512GB");
        computer.setMemory("32GB");
        String jsonStr = JSON.toJSONString(computer);
        log.info("------结果内容:{} 类型为:{}------", jsonStr, jsonStr.getClass());
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
JavaBean 转 Json 字符串

2.3 List 转 JsonArray

实现示例:

    /**
     * List 转 JsonArray
     */
    @Test
    public void listToJsonArray(){
        List<Computer> list = computerService.list();
        JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
        log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(0), jsonArray.getClass());
        log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(1), jsonArray.getClass());
        log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(2), jsonArray.getClass());
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
List 转 JsonArray

2.4 List 转Json 字符串

实现示例:

    /**
     * List 转 Json 字符串
     */
    @Test
    void listToJsonStr() {
        List<Computer> list = new ArrayList<>();
        Computer computerOne = new Computer();
        computerOne.setCpu("r7-4800h");
        computerOne.setGpu("RTX-3060");
        computerOne.setSsd("512GB");
        list.add(computerOne);
        Computer computerTwo = new Computer();
        computerTwo.setCpu("i5-12600k");
        computerTwo.setGpu("RTX-3060Ti");
        computerTwo.setSsd("512GB");
        list.add(computerTwo);
        String listJson = JSON.toJSONString(list);
        System.out.println(listJson);
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
List 转 Json 字符串

2.5Map 转 Json 字符串

实现示例:

    /**
     * Map 转 Json 字符串
     */
    @Test
    void mapToJsonStr(){
        Map<String, Object> map = new HashMap<>();
        map.put("key1","AAA");
        map.put("key2","bbb");
        map.put("key3","CCC");
        String mapJson = JSON.toJSONString(map);
        System.out.println("mapJson:" + mapJson);
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Map 转 Json 字符串

三、JSON 相关 -> 其它类型

3.1 Json 字符串转 JavaBean

实现示例:

    /**
     * Json 字符串转 JavaBean
     */
    @Test
    void jsonStrToJavaBean(){
        Computer computer = new Computer();
        computer.setCpu("r7-4800h");
        computer.setGpu("RTX-3060");
        computer.setSsd("512GB");
        computer.setMemory("32GB");
        String jsonStr = JSON.toJSONString(computer);
        System.out.println(jsonStr);
        Computer result = JSONObject.parseObject(jsonStr, Computer.class);
        System.out.println(result);
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Json 字符串转 JavaBean

3.2 Json 字符串转 JsonObject

实现示例:

    /**
     * Json 字符串转 JsonObject
     */
    @Test
    void jsonStrToJsonObject() {
        String jsonStr = "{ 
                     \"activityId\": \"871047729944117248\",\n" +
                "    \"activityType\": \"OA\",\n" +
                "    \"awardId\": \"886982449056579584\",\n" +
                "    \"awardName\": \"OA测试\" }";
        JSONObject parse = JSONObject.parseObject(jsonStr);
        System.out.println(parse.getString("activityId"));
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Json 字符串转 JsonObject

3.3 Json 字符串转 List

实现示例:

    /**
     * Json 字符串转 List
     */
    @Test
    void jsonStrToList(){
        String jsonStr = "[{ \"activityId\": \"871047729944117248\",\n" +
                "    \"activityType\": \"OA\",\n" +
                "    \"awardId\": \"886982449056579584\",\n" +
                "    \"awardName\": \"OA测试\" }]";
        List<Map> maps = JSONArray.parseArray(jsonStr, Map.class);
        maps.forEach(System.out::println);
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Json 字符串转 List

3.4Json字符串转Map

实现示例:

    /**
     * Json 字符串转 Map
     */
    @Test
    void jsonStrToMap(){
        String jsonStr = "{\"AA\": 1,\"BB\":2,\"CC\":3}";
        Map map = JSONObject.parseObject(jsonStr, Map.class);
        map.forEach((o1, o2) -> System.out.println(o1 + "=" + o2));
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Json 字符串转 Map

四、Json 相关互转

4.1 Json 数组字符串转 JsonArray

实现示例:

    /**
     * Json 数组字符串转 JsonArray
     */
    @Test
    void jsonStrToJsonArray() {
        JSONArray jsonArray = new JSONArray();
        //初始化一个 Java 对象
        Computer computer = new Computer();
        computer.setCpu("r7-4800h");
        computer.setGpu("RTX-3060");
        computer.setSsd("512GB");
        //初始化一个 JSONObject 对象
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("AAA", 100);
        //将上述两个对象都丢到 JSONArray 对象中,即 JSONArray 不是一般的数组,是可以放各种 Object 到一个 JSONArray 对象里的
        jsonArray.add(computer);
        jsonArray.add(jsonObject);
        String str = JSONArray.toJSONString(jsonArray);
        System.out.println(str);
        String jsonArrStr = "[{\"cpu\" : \"r7-4800h\",\"gpu\" : \"RTX-3060\"},{\"cpu\" : \"i5-12600K\",\"gpu\" : \"RTX-3060Ti\"}]";
        JSONArray result = JSONArray.parseArray(jsonArrStr);
        result.forEach(o -> System.out.println(o.toString()));
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
Json 数组字符串转 JsonArray

4.2 JsonObject 转 Json字符串

实现示例:

    /**
     * JsonObject 转 Json字符串
     */
    @Test
    void jsonObjectToJsonStr() {
        JSONObject jsonObject = new JSONObject();
        //初始化一个 Java 对象
        Computer computer = new Computer();
        computer.setCpu("r7-4800h");
        computer.setGpu("RTX-3060");
        computer.setSsd("512GB");
        jsonObject.put("computer", computer);
        String jsonStr = JSON.toJSONString(jsonObject);
        System.out.println(jsonStr);
    }

转换结果:

【主流技术】日常工作中关于 JSON 转换的经验大全(Java)
JsonObject 转 Json字符串

五、文章小结

关于 Json 格式的介绍和日常开发中的 Json 转换经验大全就分享到这里。如果文章有错误和不足,还期待大家的指正。或者大家有什么其它补充,也欢迎在评论区交流!文章来源地址https://www.toymoban.com/news/detail-838613.html

到了这里,关于【主流技术】日常工作中关于 JSON 转换的经验大全(Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据工程师的日常工作内容是干嘛?

    本文来源:知乎 大家好,我是脚丫先生 (o^^o) 最近小伙伴们,有问到大数据工程师岗位平常的日常工作都是干嘛的? 大数据或者说想入门大数据,技术肯定是第一重要的,不会大数据的技术谈什么大数据。那么大数据的技术怎么学,要知道大数据是依赖Java的,首先要保证J

    2023年04月16日
    浏览(30)
  • 日常工作中常用的抓包工具都有哪些呢?

    大家好,今天我们一起来聊聊,在我们的日常工作中都有哪些抓包工具呢?你们平时工作中都在哪一款工具呢?一起学习交流。 一、Wireshark 这款抓包工具目前是使用最多的,分析网络交互非常方便 二、Fiddler,多数是使用在抓包手机的相关网络交互的网络包,目前也是非常流

    2024年01月20日
    浏览(43)
  • redis在日常开发工作中的常见用法

    redis是一款内存型数据库,在开发工作中经常用到,功能强大; 特别开一篇文章用来记录一下它的常见用法,算是一种总结; 它最主要的特点就是高可用的,速度快,分布式;有人说速度快,能有我本地的全局静态变量快?但是在大型的项目中,多个服务器部署时,其他服务

    2024年02月09日
    浏览(28)
  • 程序员日常|为什么我在开发工作中偏爱这款键盘?

    最近一直不断地有粉丝朋友们私信我,问我该如何给自己挑选一款适合程序员工作的键盘,于是今天来给大家介绍下我用的键盘。 程序员作为一个需要长时间敲代码的职业,没有一个趁手的键盘是不行的,往小了说是折损工作效率,往大了说就是在损伤自己的手,是对自己的

    2024年02月02日
    浏览(35)
  • ChatGPT在日常生活与工作中的应用,以及Hulu AI 的探索之旅

    在数字化快速发展的当下,人工智能技术已经成为我们不可或缺的一部分。特别是在信息过载的时代,AI 如 ChatGPT 等工具能够帮助我们更高效地处理信息,提升生活和工作质量。本文旨在探讨 ChatGPT 在不同领域的实用性,以及介绍一个集成了多种AI工具的平台——Hulu AI,它可

    2024年04月13日
    浏览(31)
  • Sqoop【实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)

    1️⃣ 查看所有命令【 sqoop help 】 2️⃣ 查看某条命令的具体使用方法【 sqoop help COMMAND 】 查询MySQL所有数据库,通常用于 Sqoop 与 MySQL 连通测试: 【具体参数可以使用 sqoop help list-databases 查看】实例: 结果: 【2个】WARN处理: 查询指定数据库中所有数据表,这里要注意一下

    2024年03月18日
    浏览(41)
  • SQ工具|11|ArcMap中关于土地报备坐标的转换(txt与shp的转换)

    第一部分:shp转txt ①界面关键功能介绍 红色框中分组字段下拉框是为了解决将多个要素转换至一个txt中的需求,当多个图斑的分组字段具有相同值时,将转换至一个txt文件中;若需每个图斑转换至一个txt文件,选择数据源一个不具有重复值的字段,推荐FID字段。绿色框中为

    2024年02月16日
    浏览(37)
  • 一篇文章掌握WebService服务、工作原理、核心组件、主流框架

    目录 1、WebService定义 解决问题: 2、WebService的工作原理 2.1 实现一个完整的Web服务包括以下步骤 2.2 调用方式 3、Web Service的核心组件 3.1 XML 3.2 SOAP 3.3 WSDL 3.4 UDDI 4、主流框架 4.1 AXIS(已淘汰) 4.2 XFire 4.3 CXF 5、Soap协议详解 1.Soap协议是什么 2.认识Soap 3.结论 4.SOAP小总结 6、WSDL详解

    2024年01月18日
    浏览(41)
  • 日常随笔——如何把excel题库转换为word打印格式

    将Excel题库转换为Word可以通过编程的方式实现。以下是一个使用Python的示例代码,该代码使用openpyxl库读取Excel文件,并使用python-docx库创建和保存Word文档。 首先,请确保已经安装了 openpyxl 和 python-docx 库。可以使用以下命令进行安装: 然后,使用以下代码将Excel题库转换为

    2024年02月14日
    浏览(64)
  • 使用ATC工具将主流开源框架模型转换为昇腾模型

    昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是昇腾CANN架构体系下的模型转换工具:什么是ATC,它能做什么? 它可以将开源框架的网络模型(例如TensorFlow、ONNX等)转换为昇腾AI处理器支持的模型文件(.om格式),用于后续的模型推理。 它可以将基于Ascend IR定义的单算子描

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包