Java实现单个参数读取多级JSON信息(代码)

需求

Java方法实现以data.info.author.name,value格式做传入参数读取json深层次的信息,而不用一级一级地去遍历Json对象。

代码实现

方法代码

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;public static String getValueByPath(JSONObject json, String path) {if (json == null || path == null) {return null;}String[] keys = path.split("\\.");JSONObject currentNode = json;for (String key : keys) {if (currentNode.containsKey(key)) {Object value = currentNode.get(key);if (value instanceof JSONObject) {currentNode = (JSONObject) value;} else {// 当遇到非JSONObject时,返回当前层级的值return value.toString();}} else {// 如果路径中的key不存在,则返回nullreturn null;}}// 返回最深层次的值return JSON.toJSONString(currentNode);}

参数说明

这个方法中传参的json是使用com.alibaba.fastjson解析后的JSON对象,不是字符串:

JSONObject json= JSON.parseObject(jsonStr);

使用的依赖

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.9.graal</version></dependency>

测试效果

假设有一json字符串是这样的多级结构:
在这里插入图片描述

使用本方法获取的示例代码是:

public class UtilsTest {// 使用示例public static void main(String[] args) {String jsonStr = "{\"data\":{\"info\":{\"author\":{\"name\":{\"value\":\"Kelvin,Welcome to 1024!\"}}}}}";JSONObject jsonObject = JSON.parseObject(jsonStr);String value = FileUtils.getValueByPath(jsonObject, "data.info.author.name.value");System.out.println("Get INFO: " + value);  // 输出GET INFO: Kelvin,Welcome to 1024!}
}

查询结果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】十大排序算法之 插入排序 希尔排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

mysql中insert … select锁范围

1、执行 insert … select 的时候&#xff0c;对目标表也不是锁全表&#xff0c;而是只锁住需要访问的资源。 例如&#xff0c; CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY c (c) ) EN…

针对ETC系统的OBE-SAM模块设计方案

ETC&#xff08;Electrical Toll Collection&#xff09;不停车收费是目前世界上最先进的路桥收费方式。通过安装在车辆挡风玻璃上的车载单元与安装在收费站 ETC 车道上的路侧单元之间的微波专用短程通讯&#xff0c;利用计算机联网技术与银行进行后台结算处理&#xff0c;从而…

2.3_11 管程

文章目录 2.3_11 管程&#xff08;一&#xff09;为什么要引入管程&#xff08;二&#xff09;管程的定义和基本操作&#xff08;三&#xff09;拓展1&#xff1a;用管程解决生产者消费者问题&#xff08;四&#xff09;Java中类似于管程的机制 总结 2.3_11 管程 &#xff08;一…

数位dp 笔记

小技巧1:求区间[X, Y]可以转换为求F(Y) - F(X-1) F(X)表示0~X中满足条件的数字个数 小技巧2&#xff1a;可以用树的形式来看 遍历最高位&#xff0c;每一位分为两种情况&#xff1a;未达到上界和达到上界 如果走到右边最底端需加1 度的数量 求给定区间 [X,Y]中满足下列条件的…

Docker_搭建跨服务器网络通讯(swarm 集群)

本文目录 一、如何搭建docker的跨服务器网络1、在主服务器上初始化docker swarm 集群2、其他服务器节点加入到创建好的集群中3、检验集群是否搭建成功4、创建overlay类型的docker网络 二、如何部署服务1、docker部署2、docker-compose部署 一、如何搭建docker的跨服务器网络 1…

面试软件测试,面试官最想听到的答案是什么?

测试也分三六九等&#xff0c;比较简单就是根据写好的测试案例运行界面&#xff0c;有bug报bug&#xff0c;再好些是知道些测试理念&#xff0c;能根据需求编写测试案例&#xff0c;再好些&#xff0c;能编写各种自动化测试脚本&#xff0c;在此基础上&#xff0c;知道的自动化…

CleanMyMac X4.15中文完整免费版下载

CleanMyMac X是一款功能全面的Mac管理软件&#xff0c;它能帮助用户清理无用的文件&#xff0c;监控系统健康&#xff0c;管理启动项&#xff0c;甚至还能移除恶意软件&#xff0c;确保你的Mac保持最佳状态。其直观的界面设计使得新手用户也能轻松上手&#xff0c;一键扫描和清…

Keepalive+LVS群集部署

引言 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 一、Keepalive概述 keepalive软件起初是专为 LVS 负载均衡软件设计的&#xff0c;用来管理并监控 LVS集群中各个服务节点的状态&#xff0c;后来又加入了可以…

外汇天眼科普:什么是场内交易和场外交易?

场内交易 又称交易所交易&#xff0c;指所有的供求方集中在交易所进行竞价交易的交易方式。 这种交易方式具有交易所向交易参与者收取保证金、同时负责进行清算和承担履约担保责任的特点。 此外&#xff0c;由于每个人都有不同的需求&#xff0c;交易所事先设计出标准化的金融…

第一讲 计算机组成与结构(初稿)

计算机组成与结构 计算机指令常见CPU寄存器类型有哪些&#xff1f;存储器分类&#xff1f;内存&#xff1f;存储器基本组成&#xff1a; 控制器的基本组成主机完成指令的过程以取数指令为例以存数指令为例ax^2bxc程序的运行过程 机器字长存储容量小试牛刀&#xff08;答案及解析…

Matlab偏微分方程拟合 | 完整源码 | 视频教程

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…