12-Python操作json
阿新 • • 發佈:2018-11-26
1、概述
Python操作json檔案在測試中會經常用到,那麼python怎麼操作json檔案呢,今天就來簡單瞭解一下。Python中提供了dumps、dump、loads、load,用於字串 和 python資料型別間進行轉換。
2、json.dumps()
json.dumps()用於將dict型別的資料轉成str,因為如果直接將dict型別的資料寫入json檔案中會發生報錯,因此在將資料寫入時需要用到該函式。
1)dict型別資料轉成str演示
# encoding:utf-8 import json # 字典 var_dir = {'name': 'zhangsan', 'password': 'zs123456'} # 字典轉為字串 var_str = json.dumps(var_dir) # 列印變數 print(var_dir) print(var_str) # 列印變數型別 print(type(var_dir)) print(type(var_str))
執行結果
2)dict型別資料轉成str應用
# encoding:utf-8 import json var_dir = {'name': 'zhangsan', 'password': 'zs123456'} # 字典轉為字串,此步必不可少,否則資料寫入json檔案時會報錯var_str = json.dumps(var_dir) file_path = '../dataconfig/test.json' with open(file_path,'w') as fp: fp.write(var_str) fp.close()
3、json.loads()
json.loads()用於將str型別的資料轉成dict
# encoding:utf-8 import json # 字典 var_dir = {'name': 'zhangsan', 'password': 'zs123456'} # 字典轉為字串var_str = json.dumps(var_dir) # 字串轉為字典 var_conver_dir = json.loads(var_str) # 列印變數 print(var_dir) print(var_str) print(var_conver_dir) # 列印變數型別 print(type(var_dir)) print(type(var_str)) print(type(var_conver_dir))
執行結果如下,str轉dir時會發生編碼轉換,str會轉換成unicode,因此紅色框中的列印結果會出現u
4、json.dump()
json.dump()用於將dict型別的資料轉成str,並寫入到json檔案中。因此如下兩種方法都可將資料寫入json檔案
# encoding:utf-8 import json var_dir1 = {'name': 'zhangsansan', 'password': 'zss123456'} var_dir2 = {'name': 'lisisi', 'password': 'lss123456'} file_path = '../dataconfig/test.json' # 方法一:資料寫入json檔案 # 字典轉為字串 var_str = json.dumps(var_dir1) with open(file_path,'w') as fp: fp.write(var_str) fp.close() # 方法二:資料寫入json檔案 json.dump(var_dir2,open(file_path,'w'))
5、json.load()
json.load()用於從json檔案中讀取資料
# encoding:utf-8 import json file_path = ('../dataconfig/login.json') data = json.load(open(file_path)) print(data) print(type(data)) for key in data.keys(): print('key: %s value: %s' % (key, data.get(key)))
執行結果如下
6、封裝方法讀取json檔案,根據key返回對應值
# coding:utf-8 import json class OperJson: # 建構函式 def __init__(self,filepath=None): if filepath: self.filepath = filepath else: self.filepath = "../dataconfig/login.json" self.data = self.read_data() def read_data(self): # 這樣寫比fp = open(self.filepath)好,以防開啟後忘了關閉,忘寫fp.close() with open(self.filepath) as fp: data = json.load(fp) return data def get_data(self,keyname): return self.data[keyname] if __name__ == '__main__': op = OperJson() print op.get_data('login') print op.get_data('getUserInfo')