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.pswp.cn/news/164010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164010.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電力行業的智能調度:數字孿生技術

隨著科技的發展,數字孿生技術正逐漸滲透到各個行業領域,其中包括電力行業。數字孿生技術為電力行業帶來了前所未有的機遇,使得電力系統的運行更加高效、安全和可持續。本文借用山海鯨可視化軟件幾個電力行業數字孿生案例探討數字孿生技術在電…

介紹幾種Go語言開發的IDE

文章目錄 1.前言2.幾種ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.總結寫在最后 1.前言 Go語言作為一種新興的編程語言,近年來受到了越來越多的關注。 它以其簡潔、高效和并發性能而聞名,被廣…

Jmeter 壓測保姆級入門教程

1、Jmeter本地安裝 1.1、下載安裝 軟件下載地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/ 選擇一個壓縮包下載即可 然后解壓縮后進入bin目錄直接執行命令jmeter即可啟動 1.2 修改語言 默認是英文的,修改中文,點擊…

關于解決C# WinForm中Chart控件增刪數據時報錯的解決方法

1.報錯代碼 System.InvalidOperationExceptionHResult=0x80131509Message=集合已修改;可能無法執行枚舉操作。具體報錯表現為,在Application.Run(Form1())中斷。 2.解決方法 這個錯誤通常是由于在枚舉集合時對集合進行了修改而引起的。在修改完chart控件中的內容后,可能會…

Linux---常用命令匯總

文章目錄 關于目錄操作的命令ls/llcdpwdmkdir 關于文件操作的命令touchechocatrmmvcpvim 關于查詢操作的命令greppsnetstat 關于目錄操作的命令 ls/ll ls : 列出當前目錄下的目錄和文件(以行的展示形式) ll : 列出當前目錄下的目錄和文件&…

Django之Cookie與Session,CBV加裝飾器

前言 會話跟蹤技術 在一個會話的多個請求中共享數據,這就是會話跟蹤技術。例如在一個會話中的請求如下: ? 請求銀行主頁; 請求登錄(請求參數是用戶名和密碼);請求轉賬(請求參數與轉賬相關的數…

Thread類常用成員方法

點擊鏈接返回標題-> Java線程的學習-CSDN博客 目錄 前言 有關線程名字的成員方法: String getName() void setName(String name) Thread(String name) 獲取線程對象的成員方法: static Thread currentThread() 讓線程睡眠的成員方法&#xff1…

時間序列分析算法的概念、模型檢驗及應用

時間序列分析是一種用于研究隨時間變化的數據模式和趨勢的統計方法。這類數據通常按照時間順序排列,例如股票價格、氣溫、銷售額等。時間序列分析的目標是從過去的觀測中提取信息,以便預測未來的趨勢。 以下是關于時間序列分析的一些重要概念、模型檢驗…

python 數據類型之集合

常見的數據類型: int,整數類型(整形)bool,布爾類型str,字符串類型list,列表類型tuple,元組類型dict,字典類型,一個容器且元素必須是鍵值對。set,…

I Doc View在線文檔預覽系統RCE漏洞(QVD-2023-45061)

0x01 產品簡介 iDocView是一個在線文檔解析應用,旨在提供便捷的文件查看和編輯服務。 0x02 漏洞概述 漏洞成因 本次漏洞出現在在線文檔解析應用中的遠程頁面緩存功能。具體問題在于該應用未能對用戶輸入的URL進行充分的安全驗證,從而導致存在安全隱患…

前端實現菜單快速檢索的功能

前端CSS <style type"text/css">.btn-box {color: #fff;width: auto;border-radius: 25px;min-width: 40px;height: 40px;margin: 9px;line-height: 40px;display: inline-block;position: relative;overflow: hidden;background-image: linear-gradient(315de…

紅隊攻防實戰之內網穿透隱秘隧道搭建

別低頭&#xff0c;皇冠會掉&#xff1b;別流淚&#xff0c;賤人會笑。 本文首發于先知社區&#xff0c;原創作者即是本人 0x00 前言 構建內網隱蔽通道&#xff0c;從而突破各種安全策略限制&#xff0c;實現對目標服務器的完美控制。 當我們從外網成功獲得攻擊點的時候&…

SAP BAPI For LU01/LU04 記賬更改

場景&#xff1a;采購收貨質檢放行的時候&#xff0c;發現存在有些做QA11的時候&#xff0c;進入到TR-ZONE中&#xff0c;沒有進入到指定的倉位 解決方案&#xff1a;前端通過LU04進入&#xff0c;可以查看到一些未清的記賬更改通知單&#xff0c;點擊工具欄上的創建轉儲單&am…

Docker Swarm總結+service創建和部署、overlay網絡以及Raft算法(2/3)

博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼下載地址&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&#x1f3fb;…

新的預測模型的局部評價指標-pAUROCc

新的預測模型的局部評價指標-pAUROCc Background 局部評價主要是用在不平衡數據上&#xff0c;其合理性&#xff1a;1.局部評價比全局評價敏感&#xff0c;更容易區分模型的優劣&#xff1b;2.臨床決策曲線&#xff08;DCA&#xff09;可知&#xff0c;模型使用過程中&#x…

什么是JSX

在React組件中&#xff0c;JSX&#xff08;JavaScript XML&#xff09;是一種語法擴展&#xff0c;用于描述組件的結構和外觀。JSX允許我們在JavaScript中編寫類似HTML的標記語言&#xff0c;以創建React元素。 在React組件中&#xff0c;render方法是用于定義并返回組件的結構…

HarmonyOS開發(六):構建簡單頁面

1、Column&Row組件 1.1、概述 一個頁面由很多組件組成&#xff0c;如果需要把這些組件組織起來布局好&#xff0c;需要借助容器組件來實現。 容器組件是一種特殊的組件&#xff0c;它可以包含其他組件&#xff0c;而且按照一定的規律布局&#xff0c;一個容器組件中可以…

Linux--初識和基本的指令(2)

目錄 前言 1. 指令 1.1 cd其它攜帶指令 1.2 ls其它攜帶指令 1.3 which指令 1.4 alias指令 1.5 mkdir其他攜帶指令 1.7 yum -y install 安裝指令 1.8 stat指令 1.9解決指令失控狀態 1.10 rmdir&&rm指令 1.11 man指令 1.12 cp指令 1.13 mv指令 1.14 nano…

vue項目引入中國地圖

先安裝有china.js的版本 npm install echarts4.8 --save //以前的版本有china.js <template><div class"mapMain"><div id"map" style"width: 30vw; height: 30vw;" /></div> </template><script>//引入文…

提高蘋果企業簽名穩定性的關鍵方法包括幾點

提高蘋果企業簽名穩定性的關鍵方法包括以下幾點&#xff1a; 控制簽名量&#xff1a;蘋果企業簽名的穩定性與每本書的簽發量有很大的關系。一般來說&#xff0c;每本書上簽10個APP和每本書上簽100個APP是兩種不同的概念。為了提高穩定性&#xff0c;正規的簽名平臺會嚴格控制每…