1.引言
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写。我们在日常编程中会用到很多Json格式的数据,因此对Json格式数据的处理变得非常重要。Python3自带了Json模块,可以对Json格式的数据进行分析和处理。
2.Json模块介绍
2.1.什么是Json模块
Json模块是Python内置的一个用于操作Json数据的模块,可以方便地将Json格式的文本转换成Python对象,也可以将Python对象转换成Json格式的文本。Json模块同时也提供了一些方法用于对Json格式的数据进行解析和编码。
2.2.Json模块的应用
在Python开发中,Json模块是处理Json数据非常重要的一部分,主要应用在以下几个方面:
解析Json格式的数据
将Python对象转换成Json格式的数据
将Json格式的数据转换成Python对象
3.Json模块的使用
3.1.解析Json格式的数据
解析Json格式的数据,就是将Json格式的数据转换成Python对象。Json格式的数据可以是存储在文件中的,也可以是通过网络传输的字符串。Json模块提供了loads()函数用于将Json格式的字符串转换成Python对象。
3.1.1.loads()函数
loads()函数主要用于将Json格式的字符串转换成Python对象。
import json
#Json格式的字符串
json_str = '{"name":"Tom","age":18,"sex":"male"}'
#将Json格式的字符串转换成Python对象
data = json.loads(json_str)
#打印Python对象类型
print(type(data))
#打印Python对象
print(data)
运行结果如下所示:
<class 'dict'>
{'name': 'Tom', 'age': 18, 'sex': 'male'}
可以看到,Json格式的字符串已经被成功转换成了Python的字典类型。
3.1.2.load()函数
load()函数主要用于从文件中读取Json格式的数据,并将其转换成Python对象。
import json
#从文件中读取Json格式的数据
with open('data.json', 'r') as f:
data = json.load(f)
#打印Python对象类型
print(type(data))
#打印Python对象
print(data)
运行结果如下所示:
<class 'dict'>
{'name': 'Tom', 'age': 18, 'sex': 'male'}
可以看到,打开文件,并使用Json模块的load()函数读取文件中的Json格式数据并将其转换成Python的字典类型。
3.2.将Python对象转换成Json格式的数据
将Python对象转换成Json格式的数据,就是将Python中的数据类型转换成Json格式的字符串。Json模块提供了dumps()函数用于将Python对象转换成Json格式的字符串。
3.2.1.dumps()函数
dumps()函数主要用于将Python对象转换成Json格式的字符串。
import json
#Python中的字典类型
data = {'name': 'Tom', 'age': 18, 'sex': 'male'}
#将Python对象转换成Json格式的字符串
json_str = json.dumps(data)
#打印Json格式的字符串类型
print(type(json_str))
#打印Json格式的字符串
print(json_str)
运行结果如下所示:
<class 'str'>
{"name": "Tom", "age": 18, "sex": "male"}
可以看到,Python中的字典类型已经被成功转换成了Json格式的字符串。
3.2.2.dump()函数
dump()函数主要用于将Python对象转换成Json格式的字符串,并将其保存在文件中。
import json
#Python中的字典类型
data = {'name': 'Tom', 'age': 18, 'sex': 'male'}
#将Python对象转换成Json格式的字符串,并保存在文件中
with open('data.json', 'w') as f:
json.dump(data, f)
运行结果如下所示:
{"name": "Tom", "age": 18, "sex": "male"}
可以看到,Python中的字典类型已经被成功转换成了Json格式的字符串,并保存在文件中。
3.3.将Json格式的数据转换成Python对象
将Json格式的数据转换成Python对象,就是将Json格式的字符串转换成Python的数据类型。Json模块提供了loads()函数用于将Json格式的字符串转换成Python对象。
3.3.1.loads()函数
loads()函数主要用于将Json格式的字符串转换成Python对象。
import json
#Json格式的字符串
json_str = '{"name":"Tom","age":18,"sex":"male"}'
#将Json格式的字符串转换成Python对象
data = json.loads(json_str)
#打印Python对象类型
print(type(data))
#打印Python对象
print(data)
运行结果如下所示:
<class 'dict'>
{'name': 'Tom', 'age': 18, 'sex': 'male'}
可以看到,Json格式的字符串已经被成功转换成了Python的字典类型。
3.3.2.load()函数
load()函数主要用于从文件中读取Json格式的数据,并将其转换成Python对象。
import json
#从文件中读取Json格式的数据,并将其转换成Python对象
with open('data.json', 'r') as f:
data = json.load(f)
#打印Python对象类型
print(type(data))
#打印Python对象
print(data)
运行结果如下所示:
<class 'dict'>
{'name': 'Tom', 'age': 18, 'sex': 'male'}
可以看到,打开文件,并使用Json模块的load()函数读取文件中的Json格式数据并将其转换成Python的字典类型。
4.使用Json模块处理Json格式数据
4.1.解析Json格式数据
Json模块的loads()函数可以用来解析Json格式的数据。接下来以某个网站查询天气的API为例子来进行介绍。
查询数据接口:https://www.apiopen.top/weatherApi?city=北京
将API返回的Json数据解析成Python的字典类型:
import json
import urllib.request
url = 'https://www.apiopen.top/weatherApi?city=北京'
try:
#请求API接口
response = urllib.request.urlopen(url)
#读取API返回的Json数据
json_str = response.read()
#将Json数据解析成Python的字典数据类型
data = json.loads(json_str)
#打印结果
print(data)
except Exception as e:
print(e)
运行结果如下所示:
{'code': 200, 'msg': '成功!', 'data': {'yesterday': {'date': '12日星期六', 'high': '高温 15℃', 'fx': '无持续风向', 'low': '低温 2℃', 'fl': '', 'type': '晴'}, 'city': '北京', 'forecast': [{'date': '13日星期天', 'high': '高温 13℃', 'fengli': '
Json格式的数据已经成功解析为Python的字典数据类型。
4.2.将Python对象转换成Json格式的数据
Json模块的dumps()函数可以将Python对象转换成Json格式的字符串。下面以Python字典类型举例来说明如何将Python对象转换成Json格式的数据:
import json
data = {'name': 'Tom', 'age': 18, 'sex': 'male'}
#将Python对象转换成Json格式的数据
json_str = json.dumps(data)
#打印Json格式的数据
print(json_str)
运行结果如下所示:
{"name": "Tom", "age": 18, "sex": "male"}
4.3.将Json格式的数据转换成Python对象
Json模块的loads()函数可以将Json格式的字符串转换成Python对象。下面以将Json格式的字符串转换成Python的字典类型为例。
import json
json_str = '{"name":"Tom","age":18,"sex":"male"}'
#将Json格式的数据转换成Python对象
data = json.loads(json_str)
#打印Python对象的类型
print(type(data))
#打印Python对象的值
print(data)
运行结果如下所示:
<class 'dict'>
{'name': 'Tom', 'age': 18, 'sex': 'male'}
5.总结
Json格式数据在Python开发中是非常常见的数据格式,Python3自带的Json模块可以方便的操作和处理Json格式的数据。Json模块的loads()函数和dumps()函数可以分别将Json格式的字符串转换成Python对象和将Python对象转换成Json格式的数据,并且Json模块还提供了load()和dump()函数用于读取和保存Json格式的数据。通过对Json模块的学习和实践,可以更加高效地处理Json格式数据。