av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

使用Python對(duì)復(fù)雜的json進(jìn)行解析

json是一種輕量級(jí)、跨平臺(tái)、跨語(yǔ)言的數(shù)據(jù)交換格式; json模塊提供了對(duì)json的支持,它既包含了將json字符串恢復(fù)成Python對(duì)象的函數(shù),也提供了將Python對(duì)象轉(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 對(duì)象的 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值進(jìn)行合并

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]}}

本文題目:使用Python對(duì)復(fù)雜的json進(jìn)行解析
標(biāo)題路徑:http://uogjgqi.cn/article/dhdohip.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流