新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Python對復(fù)雜的json進行解析
json是一種輕量級、跨平臺、跨語言的數(shù)據(jù)交換格式; json模塊提供了對json的支持,它既包含了將json字符串恢復(fù)成Python對象的函數(shù),也提供了將Python對象轉(zhuǎn)換成json字符串的函數(shù)

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]}}
網(wǎng)站欄目:使用Python對復(fù)雜的json進行解析
新聞來源:http://www.dlmjj.cn/article/dhdohip.html


咨詢
建站咨詢
