在测试过程中,我们经常会碰到json形式的报文,那我们就要学会如何快速读取json文件了。
读取硬盘中的JSON文件内容,具体方法是:json.load()
前提:准备一个json文件数据
示例代码如下:
import json
#json文件数据的路径
filename = 'C:/Users/FCL/Desktop/数据分析-python/json01.json'
with open(filename, 'r',encoding='utf-8') as f_obj:
json_data = json.load(f_obj)
# 返回值是dict类型
print(type(json_data))
print(json_data)
# 打印key值
# print(json_data.keys())
# 读取key对应的value值
print(json_data['name'])
print(json_data['address']['city'])
# 读取data key所对应的值
for item in json_data['domain_list']:
print(item)
执行结果
具体方法为:json.loads(字符串名)
注:调用loads方法可以将字符串形式的JSON串转成结构化变量
示例代码如下:
import json
# 从字符串变量读取
json_str = '{"firstName":"John", "lastName": "Simit", "phoneNumber": [{"type": "home", "number": "1234567"}, {"type": "work", "number": "7654321"}]}'
json_data = json.loads(json_str)
print(type(json_data))
json_num = "[1,4,6,8,9]"
json_lst=json.loads(json_num)
print(type(json_lst))
print(json_lst[3])
注意事项:
当JSON字符串数据中存在字符串时,即需要引号嵌套时,键或者普通值的字符串必须使用双引号包含,数值类型则不用引号,而{}外层必须是单引号,不然会提示各种错误。
如:import json
json_dict = "{'a':'b','c':'d'}"
json.loads(json_dict)
正确如下:
json_dict = '{"a":"b","c":"d"}'
json.loads(json_dict)
当我们的数据以字典或者列表变量的形式表示,需要被写入到文件时,可以使用json.dump()方法生成JSON文件;
如果要将变量中的数据写成JSON格式的字符串,可以使用json.dumps()
生成一个json文件,
首先新建一个json文件的地址
示例代码如下:
import json
book_dict_list = [{'书名1':'11', '作者1':'伍1'}, {'书名2':'22', '作者2':'刘2'}, {'书名3':'33', '作者4':'王4'}]
filename = 'E:/pycharm-workpace/data_analyze/num03/json_output.json'
#json文件写入列表内容
with open(filename, mode='w', encoding='utf-8') as f_obj:
json_new=json.dump(book_dict_list, f_obj, ensure_ascii=False)
#读json文件
with open(filename, 'r',encoding='utf-8') as f_obj:
json_data = json.load(f_obj)
print(json_data)
生成json字符串
示例代码如下:
import json
book_dict_list = [{'书名1':'11', '作者1':'伍1'}, {'书名2':'22', '作者2':'刘2'}, {'书名3':'33', '作者4':'王4'}]
json_str = json.dumps(book_dict_list, ensure_ascii=False)
print(type(json_str))
print(json_str)