1. 程式人生 > >12-Python操作json

12-Python操作json

1、概述

Python操作json檔案在測試中會經常用到,那麼python怎麼操作json檔案呢,今天就來簡單瞭解一下。Python中提供了dumps、dump、loads、load,用於字串 和 python資料型別間進行轉換

 

2json.dumps()

json.dumps()用於將dict型別的資料轉成str,因為如果直接將dict型別的資料寫入json檔案中會發生報錯,因此在將資料寫入時需要用到該函式。

1dict型別資料轉成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))

執行結果

2dict型別資料轉成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()

 

3json.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))

執行結果如下,strdir時會發生編碼轉換,str會轉換成unicode,因此紅色框中的列印結果會出現u

 

4json.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'))

 

5json.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')