解析多层嵌套json模板的JsonUtil类

2023-12-25 04:18

本文主要是介绍解析多层嵌套json模板的JsonUtil类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司让开发一个解析现有模板的的json类。
  json模板是这样样子的多层嵌套json对象,本来要解决jsonObect和jsonArray两种类型的对象,但是仔细核对过后发现,在业务中并没有使用到jsonArray这种类型的对象。所以我先做了解析多层嵌套JsonObject的JsonObject对象。
  先开看一下我们要使用到的Json模版

	{"一班":{"座位2":{"studentAge":13,"studentName":"李四"},"座位1":{"studentAge":12,"studentName":"张三"}},"二班":{"座位3":{"studentAge":14,"studentName":"王五"},"座位4":{"studentAge":15,"studentName":"赵六"}}
}

那么这里我使用的嵌套是两层嵌套 第一级是班,第二级是座位但是在实际生产过程中,并不知道有多少级Json嵌套。那么就需要自动的来确定Json嵌套的层数。先来看我的Util类吧。

package com.kx.www;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import com.alibaba.fastjson.JSONObject;public class JsonUtils {private String jsonMode="";/*** 单个key 修改 json模版 * @param jsonMode*            jsonString模板* @param key*            传入XX.XX.XX.AA(标识要修改那个字段)* @param value*            json模版 String 字符串* @return* 			  json模版 String 字符串  如果key值在模版中有那么返回修改后的模版,如果key在模版中没有那么返回传入的模版*/public String PutNewValue(String jsonMode, String key, String value) {JSONObject jsonObject = JSONObject.parseObject(jsonMode);// 把接收到的json格式的字符串模板转换为json对象// 切分 遍历key 拿出前面节点 和最后一个key值String[] keys = key.split("\\.");List<JSONObject> list = new ArrayList<JSONObject>();list.add(jsonObject);for (int i = 0; i < keys.length - 1; i++) {try {jsonObject = jsonObject.getJSONObject(keys[i]);} catch (Exception e) {return jsonMode;}list.add(jsonObject);}jsonObject.put(keys[keys.length - 1], value);for (int i = keys.length - 2; i >= 0; i--) {list

这篇关于解析多层嵌套json模板的JsonUtil类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534243

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

hdu1254(嵌套bfs,两次bfs)

/*第一次做这种题感觉很有压力,思路还是有点混乱,总是wa,改了好多次才ac的思路:把箱子的移动当做第一层bfs,队列节点要用到当前箱子坐标(x,y),走的次数step,当前人的weizhi(man_x,man_y),要判断人能否将箱子推到某点时要嵌套第二层bfs(人的移动);代码如下: