python解析json文件方法
我們在獲取一份第三方的數據后,需要進行數據的分析,但發(fā)現它是json的文件形式并不能直接使用。這就需要用到解析的方法,我們在python中就可以完成這樣操作。下面就json說進行簡單說明,然后理清解析json文件的思路,最后把相關的解析代碼分享給大家,一起往下看具體內容。
1.json說明
json就是一種長得像嵌套字典的字符串。數據被“{}”和“[]”層層包裹,需要“拆包”才能拿到我們需要的數據。
兩種結構:
(1)“名稱/值”對的集合(Acollectionofname/valuepairs)。不同的編程語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關聯數組(associativearray)。
(2)值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被實現為數組(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文件中指定關鍵字
#處理字典值
defget_target_value(key,dic,tmp_list):
"""
:paramkey:目標key值
:paramdic:JSON數據
:paramtmp_list:用于存儲獲取的數據
:return:list
"""
ifnotisinstance(dic,dict)ornotisinstance(tmp_list,list):#對傳入數據進行格式校驗
return'argv[1]notandictorargv[-1]notanlist'
ifkeyindic.keys():
tmp_list.append(dic[key])#傳入數據存在則存入tmp_list
forvalueindic.values():#傳入數據不符合則對其value值進行遍歷
ifisinstance(value,dict):
get_target_value(key,value,tmp_list)#傳入數據的value值是字典,則直接調用自身
elifisinstance(value,(list,tuple)):
_get_value(key,value,tmp_list)#傳入數據的value值是列表或者元組,則調用_get_value
returntmp_list
#處理元組或列表值
def_get_value(key,val,tmp_list):
forval_inval:
ifisinstance(val_,dict):
get_target_value(key,val_,tmp_list)#傳入數據的value值是字典,則調用get_target_value
elifisinstance(val_,(list,tuple)):
_get_value(key,val_,tmp_list)
以上就是python解析json文件的方法,大家可以先對解析的流程進行理解,在弄清楚基本的步驟后,就可以展開上面的解析json操作啦。更多Python學習教程請關注IT培訓機構:千鋒教育。