導讀 |
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式。
它基于ECMAScript的一個子集,易于閱讀和編寫。 成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的溫宿網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設(shè)合作伙伴! Python3 中可以使用json模塊來對JSON數(shù)據(jù)進行編碼。 |
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 數(shù)組或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 數(shù)組中相同的 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]}}
本文原創(chuàng)地址: https://www.linuxprobe.com/python3-parse-complex.html
新聞標題:Python3解析復雜結(jié)構(gòu)的json
網(wǎng)頁URL:http://redsoil1982.com.cn/article10/ghojdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站制作、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、靜態(tài)網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)