json是常用的一种数据交换方式,由于其结构清晰,易于阅读且方便解析的特点,已被非常多的动态编程语言所支持。
json的语法规则
- json数据是使用大括号括起来的。
- 数据是以“名称:值”对的形式呈现,名称和值之间用冒号分隔。
- 名称必须使用双引号引起来,值根据其数据类型而定。
- 数据之间使用逗号分隔。
json格式数据:{“name”:"zhangsan","age":24}。
json值类型
- 数字(整数和浮点数),如{"age":24}
- 字符串,如{“name”:"zhangsan"}
- 布尔值(True/False),如{"flag":True}
- 列表(在中括号中),如{"sites":["name","url"]}
- 对象(在大括号中),如{"student":{“name”:"zhangsan"}}
- null,如{"age":null}
python处理json格式数据
Python 3.x版本自带json模块,不需要自己安装,json模块用于字符串和json数据类型之间的转换。
序列化:将python的数据类型转换为json格式的字符串
反序列化:将json格式的字符串转换成python的数据类型
Json模块提供了四个功能:dumps()、dump()、loads()、load()。
- dumps():将Python数据类型转换成字符串
- dump():将Python数据类型转换成字符串并写入文件中。
- loads():将字符串转换成Python数据类型
- load():将文件打开并把字符串转换成数据类型
1、dumps()将字典转换成字符串
#coding:utf-8
import json
dict1 = {"name":"zhangsan","age":24}
print(dict1)
print(type(dict1))
#dumps将字典转换成字符串
js1 = json.dumps(dict1)
print(js1)
print(type(js1))
执行结果:
{'name': 'zhangsan', 'age': 24}
<class 'dict'>
{"name":"zhangsan","age":24}
<class 'str'>
2、dump()将Python数据类型转换成字符串并写入txt文件中
#coding:utf-8
import json
dict1 = {"name":"zhangsan","age":24}
print(dict1)
print(type(dict1))
#将字典数据写入text.txt文件中
with open("text.txt",'w') as f:
js1 = json.dump(dict1,f)
print(js1)
print(type(js1))
执行结果:
{'name': 'zhangsan', 'age': 24}
<class 'dict'>
None
<class 'NoneType'>
3、loads()将字符串转换成字典
#coding:utf-8
import json
str = '{"name":"zhangsan","age":24}'
print(str)
print(type(str))
#loads将字符串转换成字典
dict1 = json.loads(str)
print(dict1)
print(type(dict1))
执行结果:
{"name":"zhangsan","age":24}
<class 'str'>
{'name': 'zhangsan', 'age': 24}
<class 'dict'>
4、load()将文件打开并把字符串转换成字典
#coding:utf-8
import json
#打开json文件并将文件中的字符串转换成字典
with open("text1.json") as f:
print(type(f))
dict1 = json.load(f)
print(dict1)
print(type(dict1))
执行结果:
<class '_io.TextIOWrapper'>
{'name': 'zhangsan', 'age': 24}
<class 'dict'>
5、读取字典类型的数据文件
创建名为text.json的文件,文件中保存的数据内容如下:
{
"student1":{"name": "zhangsan", "age": 24},
"student2":{"name":"lisi","age":23},
"student3":{"name":"wangwu","age":22}
}
#coding:utf-8
import json
#读取字典类型的数据文件
with open("text1.json") as f:
students = json.load(f)
print(students)
for student in students:
name = students[student]['name']
age = students[student]['age']
print(name,age)
执行结果:
{'student1': {'name': 'zhangsan', 'age': 24}, 'student2': {'name': 'lisi', 'age': 23}, 'student3': {'name': 'wangwu', 'age': 22}}
zhangsan 24
lisi 23
wangwu 22
6、读取列表类型的数据文件
#coding:utf-8
import json
list1 = [{"name":"zhangsan","age":24},{'name': 'lisi', 'age': 23},{'name': 'wangwu', 'age': 22}]
# 将列表list1的数据写入到text2.json
with open("text2.json",'w') as f:
js1 = json.dump(list1,f)
# 读取text2.json中的数据
with open("text2.json") as f:
strs = json.load(f)
for str in strs:
print(str)
print(str["name"])
print(str["age"])
执行结果:
{'name': 'zhangsan', 'age': 24}
zhangsan
24
{'name': 'lisi', 'age': 23}
lisi
23
{'name': 'wangwu', 'age': 22}
wangwu
22