Python3 解析複雜結構的 json
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式。
它基於ECMAScript的一個子集,易於閱讀和編寫。 Python3 中可以使用json模組來對JSON資料進行編碼。 |
d1 = [{"id" : 1,"name" : "Number1","age" : 11},{"id" : 2,"name" : "Number2","age" : 22},{"id" : "3","name" : "Number3","age" : 33}] d2 = {"persons" :[{"id" : 1,"name" : "Number1","age" : 11},{"id" : "2","name" : "Number2","age" : 22},{"id" : 3,"name" : "Number3","age" : 33}]} d3 = {"code" : 200, "persons" :[{"id" : 1,"name" : "Number1","age" : 11},{"id" : True,"name" : "Number2","age" : 22},{"id" : 3,"name" : "Number3","age" : 33}]}
## 獲取 json 陣列或json 物件的 key 列表
def get_json_keys(json_str,json_keys = []): if isinstance(json_str,list): for json_obj in json_str: for key in json_obj.keys(): if key not in json_keys: json_keys.append(key) elif isinstance(json_str,dict): for key in json_str.keys(): if key not in json_keys: json_keys.append(key) return json_keys
## 將json 陣列中相同的 key - value值進行合併
def get_key_values(json_str,json_keys): target_json = {} for key in json_keys: key_values = [] for json_obj in json_str: if isinstance(json_obj,dict): key_values.append(json_obj[key]) target_json[key] = key_values return target_json
## 主方法
def analyse_json(json_str): target_json = {} json_keys = [] if isinstance(json_str,list): json_keys = get_json_keys(json_str,json_keys) target_json = get_key_values(json_str,json_keys) elif isinstance(json_str,dict): json_keys = get_json_keys(json_str,json_keys) for key in json_keys: if not isinstance(json_str[key],list) and not isinstance(json_str[key],dict): target_json[key] = json_str[key] else: target_json[key] = analyse_json(json_str[key]) return target_json print(analyse_json(d1)) print(analyse_json(d2)) print(analyse_json(d3))
輸出:
{'id': [1, 2, '3'], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]} {'persons': {'id': [1, '2', 3], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]}} {'code': 200, 'persons': {'id': [1, True, 3], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]}}
原文地址: https://www.linuxprobe.com/python3-parse-complex.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2671098/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA 解析複雜的json字串JavaJSON字串
- [譯]在 Flutter 中解析複雜的 JSONFlutterJSON
- 學會用 Go 解析複雜 JSON 的思路GoJSON
- 一個複雜的json例子JSON
- 使用ajax請求傳送複雜的json資料型別,並解決fastjson解析複雜的json資料型別的問題JSON資料型別AST
- Flutter解析複雜JSON泛型方案--拋磚引玉篇FlutterJSON泛型
- 複雜的資料結構設計求解?資料結構
- 資料結構:時間複雜度資料結構時間複雜度
- 前端資料結構---複雜度分析前端資料結構複雜度
- 複雜連結串列的複製
- 分享一個無需定義結構體解析json的包結構體JSON
- Spring Boot 中使用 JSON Schema 來校驗複雜JSON資料Spring BootJSON
- 資料結構複雜圖形儲存 PHP 版資料結構PHP
- 資料結構與演算法——複雜度分析資料結構演算法複雜度
- JZ-025-複雜連結串列的複製
- 複雜連結串列的復刻
- 複雜頁面架構架構
- 簡單介紹Golang列印複雜結構體的兩種方法Golang結構體
- 資料結構 之 演算法時間複雜度資料結構演算法時間複雜度
- 資料結構-基本概念和時空複雜度資料結構複雜度
- 資料結構與演算法——時間複雜度資料結構演算法時間複雜度
- 面試題35:複雜連結串列的複製面試題
- 複雜SQL構造資料:SQL
- Qt構建與解析Json示例QTJSON
- C#解析JSON字串總結C#JSON字串
- 劍指 Offer 35. 複雜連結串列的複製
- 資料結構與演算法學習-複雜度分析資料結構演算法複雜度
- 自學 資料結構四月二十一日_時間複雜度&空間複雜度資料結構時間複雜度
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- 資料結構與演算法整理總結---演算法複雜度資料結構演算法複雜度
- 隨著複雜性的增加,層次結構的用處越來越小? - jarcheJAR
- 複雜系統的有界上下文和聚合結構是如何定義的?
- 資料結構與演算法:演算法的時間複雜度資料結構演算法時間複雜度
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- 如何完成複雜查詢的動態構建?
- 使用 Slow Admin 構建較複雜的頁面
- json結構體裡邊的刪除JSON結構體
- 使用clarinet(browser&node.js)解析重複key值的json字串Node.jsJSON字串