python获取json所有节点和子节点

使用python获取json的所有父结点和子节点 并使用父节点加下划线命名子节点

先展示一段json代码

{"level1": {"level2": {"level3": [{"level4": "4value"},{"level4_2": "4_2value"}]},"level2_2": "2_2value","level2_3": "2_3value"},"level1_2": [{"level2_4": "2_4value","level2_5": "2_5value"},{"level3_2": "3_2value"}]
}

上面就是这次测试的json数据 因为时间问题只写了最多4层结构
按照解析下来应该是 相应的节点为父节点、父节点+‘_’+子节点
直接上代码

import jsonclass returnJsonNode():def __init__(self):self.datas = {}def ergodic_data(self, data: dict, result=""):# 检测数据类型:字典类型if isinstance(data, dict):for k, v in data.items():if result == "":self.ergodic_data(v, k)else:self.ergodic_data(v, result + '.' + f'{k}')# 检测是否为列表或元组# 元组和列表类型差不多放到一起处理elif isinstance(data, (list, tuple)):if len(data) == 1:for i in range(len(data)):self.ergodic_data(data[i], result)else:for i in range(len(data)):self.ergodic_data(data[i], result)else:self.datas[result] = str(data)return list(self.datas.keys())with open(r'D:\zsh\Program\alls\Lucy\test\test.json') as f:datas = f.read()
keys = returnJsonNode().ergodic_data(data=json.loads(datas),result="")
print(keys)

在这里插入图片描述
因为json里面命名是_的 所以我这里用’.'代替的 可以更换成下划线
在这里插入图片描述
运行如下
在这里插入图片描述
有很多可以进行转换 这里因为是直接取出来不加任何其他处理 如果是要和python 进行jsonpath取数 可更换里面参数 如下
在这里插入图片描述
方法有很多 之前那篇文章 函数没有写完 所以导致不能完全取出来 json node,这篇文章
后续我会写成工具 包含分解成有层级的表或者Excel 如果有更好的方法 欢迎提出

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

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

相关文章

深入剖析预约上门服务系统源码:构建高效服务的代码之旅

在本文中,我们将深入研究预约上门服务系统的源码,透过代码的层层剖析,揭示系统背后的技术奥秘。我们将关注系统的核心功能,并通过代码示例演示其实现过程,为读者提供一个深度技术解读的体验。 1. 技术栈选择&#xf…

plantUML学习与实战

背景 在日常工作或者生活中,使用交互图来描述想法,往往相对于文字来说,可读性更高,同时一定程度上可以提高沟通效率,但是苦于,不想对一堆控件拖拖拉拉,本人就是一个很讨厌画图,但是…

java学习part09类的构造器

1. 2.默认构造器 如果没有显式定义任何构造器,系统会默认加一个默认构造器。 如果定义了,则不会有默认构造器。 默认构造器的权限和类的权限一样,类是public构造器就是public,类是缺省默认构造器就是缺省 反编译之后添加的构造…

Astute Graphics 2023(ai创意插件合集)

Astute Graphics 2023是一家专注于图形编辑软件的公司,以制作高质量、功能强大的图像编辑工具而闻名。如Poser Pro、Poser 3D、Smart Shapes、Astute Sketch Pro等。 Astute Graphics的软件具有以下特点: 强大的图像编辑功能:Astute Graphi…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角,点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径, 动态转移方程为:dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java: import java.a…

时间序列分析算法的概念、模型检验及应用

时间序列分析是一种用于研究随时间变化的数据模式和趋势的统计方法。这类数据通常按照时间顺序排列,例如股票价格、气温、销售额等。时间序列分析的目标是从过去的观测中提取信息,以便预测未来的趋势。 以下是关于时间序列分析的一些重要概念、模型检验…

蓝桥杯算法双周赛心得——迷宫逃脱(dp)

大家好,我是晴天学长,dp版的来啦,可以是受益匪浅啊,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .迷宫逃脱 迷官逃脱[算法赛] 问题描述 在数学王国中,存…

【办公常识_1】写好的代码如何上传?使用svn commit

首先找到对应的目录 找到文件之后点击SVN Commit

STM32——外部中断

文章目录 0.中断关系映射1.使能 IO 口时钟,初始化 IO 口为输入2.设置 IO 口模式,触发条件,开启 SYSCFG 时钟,设置 IO 口与中断线的映射关系。3.配置NVIC优先级管理,并使能中断4.编写中断服务函数。5.编写中断处理回调函…

浅析智慧社区建设趋势及AI大数据监管平台方案设计

一、背景与需求 伴随着社会与经济的发展,人们对生活质量的要求越来越高,与此同时,新兴技术的进步也促进了智慧社区市场的逐步成熟。智慧社区是社区管理的一种新理念,是新形势下城市与社会管理的一种创新模式。 在上海、杭州、深…

ELK架构

经典的ELK 经典的ELK主要是由Filebeat Logstash Elasticsearch Kibana组成,如下图:(早期的ELK只有Logstash Elasticsearch Kibana) 此架构主要适用于数据量小的开发环境,存在数据丢失的危险。 整合消息队列Ngin…

数字化背景下,集流体行业的智能制造方法论

行业背景 随着全球对清洁能源需求的不断增加,新能源领域正在迅速崛起,在新能源技术中,锂电池作为一种高效、轻便的能量储存解决方案,正成为主流。而锂电集流体作为锂电池的核心部件,承担着电池内部电流分布的关键角色…