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')

猜你喜欢

转载自www.cnblogs.com/santiandayu/p/10022529.html
今日推荐