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