您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用python解析json文件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.json說明
json就是一種長得像嵌套字典的字符串。數據被“{}”和“[]”層層包裹,需要“拆包”才能拿到我們需要的數據。
兩種結構:
(1)“名稱/值”對的集合(A collection of name/value pairs)。不同的編程語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
(2)值的有序列表(An ordered list of values)。在大部分語言中,它被實現為數組(array),矢量(vector),列表(list),序列(sequence)。
2.解析思路
(1)新建兩個函數A和B。
(2)函數 A處理字典數據,被調用后,判斷傳遞的參數,如果參數為字典,則調用自身;
(3)如果是列表或者元組,則調用列表處理函數B;
(4)函數 B處理列表,被調用后,判斷傳遞的參數,如果參數為列表或者元組,則調用自身;
(5)如果是字典,則調用字典處理函數A。
3.實例
代碼中的get_target_value函數為A函數,_get_value為B函數。
# 處理嵌套json文件中指定關鍵字 # 處理字典值 def get_target_value(key, dic, tmp_list): """ :param key: 目標key值 :param dic: JSON數據 :param tmp_list: 用于存儲獲取的數據 :return: list """ if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 對傳入數據進行格式校驗 return 'argv[1] not an dict or argv[-1] not an list ' if key in dic.keys(): tmp_list.append(dic[key]) # 傳入數據存在則存入tmp_list for value in dic.values(): # 傳入數據不符合則對其value值進行遍歷 if isinstance(value, dict): get_target_value(key, value, tmp_list) # 傳入數據的value值是字典,則直接調用自身 elif isinstance(value, (list, tuple)): _get_value(key, value, tmp_list) # 傳入數據的value值是列表或者元組,則調用_get_value return tmp_list # 處理元組或列表值 def _get_value(key, val, tmp_list): for val_ in val: if isinstance(val_, dict): get_target_value(key, val_, tmp_list) # 傳入數據的value值是字典,則調用get_target_value elif isinstance(val_, (list, tuple)): _get_value(key, val_, tmp_list)
“如何使用python解析json文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。