Springboot通过ObjectMapper(节点树)解析JSON

news2024/12/23 8:17:13

1、ObjectMapper通过节点树的方式解析JSON字符串

1.1、通过节点直接获取属性值

1.1.1、测试代码

node.get("order_id"):直接获取JSON中属性对应的值

@Test
public void  parseJson() throws Exception{
    //创建json字符串,模拟从外界接收的订单信息
    //order_id:订单id       total_amount:总价格  subject:产品信息
    //goods_detail:商品id  order_type:订单类型
    //其中goods_detail属性对应的值还是JSON字符串
    String orderInfo="{\"order_id\":\"202303200101\",\"total_amount\":\"88.88\",\"subject\":\"huaweiMate60pro\",\"goods_detail\":{\"goods_id\":\"sp_001\",\"goods_name\":\"huaweiMate60pro 1T\"},\"order_type\":\"食品\"}";
    ObjectMapper mapper = new ObjectMapper();
    // 获取根节点
    JsonNode node = mapper.readTree(orderInfo);

    // 从根节点获取属性为order_id的值
    JsonNode orderIdNode=node.get("order_id");
    //order_id=>"202303200101"
    System.out.println("order_id=>"+orderIdNode);

    JsonNode goodsDetailNode=node.get("goods_detail");
    //goodsDetailNode=>{"goods_id":"sp_001","goods_name":"huaweiMate60pro"}
    System.out.println("goodsDetailNode=>"+goodsDetailNode);
    //获取goods_detailJSON中的值
    JsonNode goodsIdNode=goodsDetailNode.get("goods_id");
    //goods_id=>"sp_001"
    System.out.println("goods_id=>"+goodsIdNode);
}

1.1.2、结果输出

1.2、通过循环的方式获取JSON中的所有值

1.2.1、测试代码

@Test
public void  parseJson() throws Exception{
    //创建json字符串,模拟从外界接收的订单信息
    //order_id:订单id       total_amount:总价格  subject:产品信息
    //goods_detail:商品id  order_type:订单类型
    //其中goods_detail属性对应的值还是JSON字符串
    String orderInfo="{\"order_id\":\"202303200101\",\"total_amount\":\"88.88\",\"subject\":\"huaweiMate60pro\",\"goods_detail\":{\"goods_id\":\"sp_001\",\"goods_name\":\"huaweiMate60pro 1T\"},\"order_type\":\"食品\"}";
    ObjectMapper mapper = new ObjectMapper();
    // 获取根节点
    JsonNode node = mapper.readTree(orderInfo);

    //通过循环的方式获取JSON的值
    Iterator<JsonNode> iterator = node.elements();
    while (iterator.hasNext()) {
        JsonNode student = iterator.next();
        // 获取节点文本
        //String name=student.get("goods_id").asText();
        System.out.println(student);
    }
}

1.2.2、结果输出

2、JSON与Object、Map、List相互转化

使用地址:https://mp.csdn.net/mp_blog/creation/editor/134275828

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

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

相关文章

2023年【危险化学品生产单位安全生产管理人员】最新解析及危险化学品生产单位安全生产管理人员理论考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员最新解析考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品生产单位安全生产管理人员理论考试题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品生产…

halcon分割粘连字符

下面的算子都可以分割&#xff1a; 1.*&#xff08;推荐使用这个&#xff09;在垂直范围较小的位置水平划分区域 partition_dynamic(circleRegion,parRegion,76,50)2.*将一个区域划分为大小大致相等的矩形。&#xff08;这个方法适合宽度相等&#xff0c;很规则的排列的字符串…

韩语图片文字如何转为纯文本?

如何将上图为韩语的图片转为文本文件&#xff1f;这个需要用到OCR程序&#xff0c;操作方法如下&#xff1a; 一、打开金鸣识别网站。 二、点击“点击添加图片/PDF”&#xff0c;将待识别的图片添加到列表。 三、识别模块点选“通用文字”&#xff0c;输出格式选择“纯文本输…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名&#xff0c;应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表&#xff0c;可以是任意数量和类型的参数。函数体是用缩进&#xff08;通常为4个…

线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队

前言 之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景&#xff0c;记录一下。 背景说明 分布式事务消息表&#xff1a;业务上使用消息表的方式&#xff0c;依赖本地事务&#xff0c;实现了一套分布式事务方案 消息表名&#xff1a;mq_messages 数据量&#xff1a;3…

Facebook广告被暂停是什么原因?Facebook广告账号被封怎么办?

许多做海外广告投放的小伙伴经常遇到一个难题&#xff0c;那就是投放的Facebook广告被拒或 Facebook 广告帐户被关闭赞停的经历&#xff0c;随之而来的更可能是广告账户被封&#xff0c;导致资金的损失。本文将从我自身经验&#xff0c;为大家分享&#xff0c;Facebook广告被暂…

kafka 集群企业部署最佳实践

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Git安装配置保姆级教程和Git创建仓库的基本原理和常用命令

目录 前言 一、Git简介 1.Git 与 SVN 区别点 2.Git的介绍 3.Git 工作流程 4.Git 工作区、暂存区和版本库 二、Git安装配置 1.Linux 平台上安装 2.Windows 平台上安装 三、Git 创建仓库和下载 1、首先需要注册一个gitee账号 2.git初始化并提交到远程仓库 3.另一用户…

chrome 的vue3的开发者devtool不起作用

问题&#xff1a; 刚刚vue2升级到vue3&#xff0c;旧的devtool识别不了vue3数据。 原因&#xff1a; devtool版本过低。升级到最新。 解决&#xff1a; 去github下载vuetool项目代码&#xff1a; GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging…

Linux学习笔记之五(父子进程、孤儿进程、僵尸进程、守护进程)

Linux 1、进程1.1、进程的六种状态1.2、创建子进程1.3、添加子进程任务1.4、孤儿进程、僵尸进程、守护进程1.4.1、避免僵尸进程1.4.2、创建守护进程1.4.3、杀死守护进程 1.5、综合练习 1、进程 进程可以简单的理解为一个正在执行的程序&#xff0c;它是计算机系统中拥有资源和…

django建站过程(4)创建文档显示页面

django建站过程&#xff08;4&#xff09;创建文档显示页面 创建文档显示页面项目主文件夹schoolapps中的文件urls.py在APP“baseapps”中创建url.py文件编写视图模板继承bootstrap创建head.html创建doclist.html创建docdetail.html 使用 markdown 编辑器安装模块Model 模型的d…

Hello World背后的逻辑

一门语言的开发入门&#xff0c;总是抬手就能整出一个「Hello World Demo」。比如下面这样&#xff1a; 显然&#xff0c;熟悉 iOS 开发的同学都知道&#xff0c;上面这个来自 Objective-C。 今天&#xff0c;我们就从这熟悉的代码入手&#xff0c;来一起研究研究「Hello Worl…

泄露35TB数据,医疗巨头Henry Schein遭受黑猫勒索组织攻击

近日&#xff0c;据Bleeping Computer 网站消息&#xff0c;BlackCat&#xff08;黑猫&#xff09;勒索软件团伙将医疗保健巨头Henry Schein 添加到了其暗网泄露网站&#xff0c;并声称其破坏了该公司的网络&#xff0c;窃取了35 TB的敏感文件&#xff0c;这些文件包括了Henry …

BES 在大规模向量数据库场景的探索和实践

导读 本文整理自 2023 年 9 月 5 日 QCon 全球软件开发大会 2023 北京站 —— 向量数据库分论坛的同名主题演讲《BES 在大规模向量数据库场景的探索和实践》。 全文5989字&#xff0c;预计阅读时间15分钟。 向量数据库是一种专门用于存储和查询向量数据的数据库系统。通过 Emb…

verdi如何打开时可以加载配置比如字体

打开tcl使能 找到配置字体的命令 其实其他有需要的文件配置都可以在这里找到对应的指令 存储文件 新建verdi001.tcl文件 输入想要调整的字体以及大小 verdiSetFont -font "Bitstream Vera Sans" -size "18" verdiSetFont -monoFont "Courier&q…

【 云原生 | K8S 】kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器&#xff08;deployment&#xff09;来启动Pod&#xff08;nginx-wl…

做哪些副业可以日赚一百?对程序员来说简直不要太容易!

日赚一百&#xff1f;对程序员来说简直不要太容易&#xff01;下面给程序员们推荐一些日赚100的副业&#xff1a; ①外包接单 程序员简单粗暴赚钱的副业之一。 外包接单的类型包括但不限于&#xff1a;软件开发、硬件开发、小程序功能开发、web开发……大到一个系统的开发、…

什么样的CRM系统更适合外贸企业?

外贸CRM系统作为外贸客户关系管理的工具&#xff0c;已经成为了当下外贸企业对外贸易过程中不可或缺的一环。那什么样的CRM系统更适合外贸企业&#xff1f;小Z向您推荐Zoho CRM。下面说说它到底有什么好处和作用。 一、搭建更高效的客户关系管理系统 外贸企业从前期推广、开发…

202205(第13届)蓝桥杯Scratch图形化编程青少组(国赛_中级)真题

202205(第13届)蓝桥杯Scratch图形化编程青少组(国赛_中级)真题 第 1 题 以下程序&#xff0c;小猫在移动完成后不能回到初始位置的是&#xff1f;&#xff08; &#xff09; A&#xff1a; B&#xff1a; C&#xff1a; D&#xff1a; 第 2 题 以下程序&#xff0c;询问…

SAP 10策略测试及简介

从今天开始将把PP模块中常用的一些策略进行一个测试,编写成系统的文档,有点策略经常不用自己都忘了一些策略的特性。所以还是有必须形成文档的形式记录下来 1、首先准备好物料 成品物料为AB0,在MRP3视图中维护对应的策略组的10 同时选择消耗模式为2.消耗期间都是999 2、其他…