Json文件也是一个文本文件,可以使用read() 和 write() ,但不方便,所以使用自己独特的方法
Json文件的语法:
主要数据类型为对象{}(类似Python中的字典)和数组[] (类似Python中的列表)
Json文件的最外层要么是一个对象{},要么是一个数组[]
Json中的对象是由键值对组成,每个数据之间用逗号隔开,最后一个数据后无逗号
Json中的字符串必须使用双引号
Json文件的书写:
- {
- "name": "熊猫",
- "like": [
- "听歌",
- "看书",
- "运动"
- ],
- "address": {
- "country": "中国",
- "city": "上海"
- }
- }
-
-
读取Json文件
1、导包 2、读打开文件 3、读取文件 json.load(文件对象)
# 返回值是字典(文件中是对象)或列表(文件中是数组)
eg1:
- # 1、导入包
- import json
-
- # 读打开文件
- with open('Info.json', encoding='utf-8') as a:
- # 读取文件
- result = json.load(a)
- # 获取姓名
- print(result.get('name')) # 熊猫
- # 获取城市
- print(result.get('address').get('city')) # 上海
eg2:提取Json文件中指定数值,组成[{},{}]格式 (自动化参数化需要的数据格式)
Json文件:
- [
- {
- "name": "熊猫",
- "like": "听歌",
- "address": "上海"
- },
- {
- "name": "老虎",
- "like": "运动",
- "address": "北京"
- }
- ]
代码:
- # 1、导入包
- import json
-
- # 读打开文件
- with open('Info.json', encoding='utf-8') as a:
- # 读取文件
- result = json.load(a)
- # 定义一个空数组
- new_list = []
- # 循环遍历
- for i in result: # i是个字典
- # (i.get('name'), i.get('like'), i.get('address'))
- # 熊猫 听歌 上海
- # 老虎 运动 北京
- new_list.append((i.get('name'), i.get('like'), i.get('address'))) # 将获取的值存入数组中
- print(new_list) # [('熊猫', '听歌', '上海'), ('老虎', '运动', '北京')]
-
-
写入Json文件
1、导包 2、写(w)方式打开文件 3、写入 json.dump(文件类型,文件对象)
- my_list = [('熊猫', '听歌', '上海'), ('老虎', '运动', '北京')]
- with open('Info2.json', 'w', encoding='utf-8') as b:
- # ensure_ascii 显示中文,不以ASCII的方式显示
- json.dump(my_list, b, ensure_ascii=False, indent=2) # indent 缩进
Info2.json:
- [
- [
- "熊猫",
- "听歌",
- "上海"
- ],
- [
- "老虎",
- "运动",
- "北京"
- ]
- ]