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:
[
[
"熊猫",
"听歌",
"上海"
],
[
"老虎",
"运动",
"北京"
]
]