33 JSON操作
目录
一、介绍
二、JSON的特点
三、JSON语法
1、json中的数据类型
四、JSON文件的定义
五、读取JSON文件
1、读取json文件的两种方式
(1)read、write
(2)json.load
2、使用json.load读取json文件的步骤
3、练习读取json文件
六、练习读取json文件
七、写入(了解)
1、作用
2、将数据写入json文件的步骤
3、练习将数据写入json文件
一、介绍
1、JSON的全程是“JavaScript Object Notation”,是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式
- 基于文本:json是文本文件,一般不包含图片、视频等内容
- 独立于语言:json不是某一种语言特有的,Python、Java、C++...等都能操作python文件
- 轻量级:相同的数据量,json文件占用的文件大小相对较小
- 数据交换格式:后端服务器和前端页面交换数据 使用的格式
2、在自动化测试中经常用来存放测试数据,文件后缀名为:.json
- 其他常见的数据源文件格式:txt/excel/csv/xml
二、JSON的特点
1、纯文本格式:不支持音频/视频/图片
2、具有良好的自我描述性,方便阅读与编写
3、具有清晰的层次结构
4、相较于XML文件,能够有效提升网络传输效率

三、JSON语法

1、json中的数据类型
- 对象{} ---> python字典
- 数组{} ---> python列表
- 字符串,必须使用双引号 ---> str
- 数字类型 ---> int、float
- bool类型(true false) ---> True False
- 空值null ---> None
2、json文件,是一个对象 或者是 数组,对象和数组可以相互嵌套
3、json中的对象,是由键值对组成的,键必须是字符串类型
4、json中的数据直接使用逗号隔开,最后一个数据后边不能加逗号
四、JSON文件的定义
1、需求
- 我叫小明,我今年18岁,性别男,学校空,爱好听歌、吃饭、打豆豆,我的居住地址为:国家中国、城市广州。
2、创建json文件

3、示例代码
{"name": "小明","age": 18,"isMan": true,"school": null,"like": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "⼴州"}
}
五、读取JSON文件
1、读取json文件的两种方式
(1)read、write
- json文件的本质是文本文件,可以直接使用read和write进行操作
(2)json.load
- json文件比较特殊,比较像python中的字典和列表,按照read和write的操作,想要取到数据比较麻烦,所以一般用专门的方法读取json文件,可以直接得到python中的列表和字典
2、使用json.load读取json文件的步骤
- 步骤1:import json #导包
- 步骤2:json.load(文件对象) #得到的是列表或者字典(取决于json文件是数组还是对象)
3、练习读取json文件
{"name": "小明","age": 18,"isMan": true,"school": null,"like": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "⼴州"}
}
import jsonwith open('info.json',encoding='utf-8') as f:buf = json.load(f)print(type(buf))print(buf) #info.json中是对象,所以得到的是字典# 先判断从json文件中读到的值是什么数据类型,再根据不同的方法处理# 姓名print(buf.get('name'))# 城市print(buf.get('adress').get('city'))#获取第二个爱好print(buf.get('like')[1])#学校print(buf.get('school'))'''
运行结果:
<class 'dict'>
{'name': '小明', 'age': 18, 'isMan': True, 'school': None, 'like': ['听歌', '吃饭', '打豆豆'], 'adress': {'country': 'China', 'city': '⼴州'}}
小明
⼴州
吃饭
None
'''
六、练习读取json文件
1、需求
- 我叫小明,我今年18岁,性别男,爱好听歌、吃饭、打豆豆,我的居住地址为:国家中国、城市广州。
- 我叫小红,我今年17岁,性别女,爱好听歌、学习、购物,我的居住地址为:国家中国、城市北京。
- 获取每个人的姓名,年龄,性别,城市
2、json文件
[{"name": "小明","age": 18,"isMan": true,"hobby": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "广州"}},{"name": "小红","age": 17,"isMan": false,"hobby": ["听歌","学习","购物"],"adress": {"country": "China","city": "北京"}}
]
3、代码实现
import jsonwith open("info2.json", encoding='utf-8') as f:buf = json.load(f)print(type(buf)) #得到的是一个数组# 方式一print(f"姓名:{buf[0].get('name')},年龄:{buf[0].get('age')},性别:{buf[0].get('isMan')},城市:{buf[0].get('adress').get('city')}")print(f"姓名:{buf[1].get('name')},年龄:{buf[1].get('age')},性别:{buf[1].get('isMan')},城市:{buf[1].get('adress').get('city')}")# 方式二for data in buf:print(f"姓名:{data.get('name')},年龄:{data.get('age')},性别:{data.get('isMan')}"f"城市:{data.get('adress').get('city')}")#方式三:当isMan的值为true,打印男,当isMan的值为false时,打印女for data1 in buf:'''python中扁平化代码的写法(推荐): 条件为true执行的代码 if判断条件 else:条件为false执行的代码a='a' if 3 > 1 else 'b''''sex = "男" if data.get('isMan') else "女"print(f"姓名:{data1.get('name')},年龄:{data1.get('age')},性别:{sex}"f"城市:{data1.get('adress').get('city')}")
七、写入(了解)
1、作用
- 将Python中的列表或者字典 转换为 json文件
2、将数据写入json文件的步骤
- 步骤1:import json #导包
- 步骤2:json.dump(Python中数据, ⽂件对象)
3、练习将数据写入json文件
import jsoninfo = [{"name":"小王","age":18,"adrress":{"country":"中国","city":"广州"}},{"name":"小李","age":17,"adrress":{"country":"中国","city":"北京"}}]with open("info3.json",'w',encoding='utf-8') as f:# json.dump(info,f)# json.dump(info,f,ensure_ascii=False) #直接显示中文json.dump(info,f,ensure_ascii=False,indent=2) #格式化写入json文件的数据