深入解析Python编程中JSON模块的使用
什么是JSON
JSON全称为JavaScript Object Notation,是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON数据格式能够表示数值、字符串、布尔值、对象、数组等类型的数据。它由键值对组成,常用于Web应用程序中的数据传输。
为什么要使用JSON
由于Web应用程序越来越普及,而且许多应用程序都需要从另一个应用程序获取数据,因此JSON逐渐成为Web之间数据交换的标准。在Python中,我们使用内置的JSON模块来进行JSON数据的解析和生成。
JSON模块的使用
JSON的数据类型与Python的数据类型的对应关系
JSON 数据类型 | Python 数据类型 |
---|---|
Object | dict |
Array | list |
String | str |
Number | int/float |
True | True |
False | False |
null | None |
JSON模块的常用方法
- json.dumps(obj, *, skipkeys=False, ensure_ascii=True, indent=None, separators=None, default=None, sort_keys=False)
将Python对象编码成JSON字符串。该函数接受一系列参数,我们来简单介绍几个常用参数。
- obj:要编码成JSON格式的Python对象。
- ensure_ascii:若ensure_ascii为True,则所有非ASCII字符在编码时将以 \uXXXX 转义序列表示,即默认按ASCII编码输出;若为False,则允许Unicode字符输出到结果中。
- indent:设置JSON字符串格式的缩进空格数。
- sort_keys:是否按照key大小排序输出,默认为False。
示例:
```python
import json
# 将Python dict编码成JSON字符串
dict_data = {"name": "Lucy", "age": 20}
json_data = json.dumps(dict_data)
print(json_data) # 输出:{"name": "Lucy", "age": 20}
# 将Python列表编码成JSON数组字符串
list_data = ["Lucy", 20]
json_data = json.dumps(list_data)
print(json_data) # 输出:["Lucy", 20]
```
- json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None)
将一个JSON字符串解码为Python对象。该函数接受一系列参数,我们来简单介绍几个常用参数。
- s:要解码的JSON字符串。
- object_hook:给解码器提供一个可选的钩子,用于转换解码后的对象。该钩子函数将被传递一个dict对象,并返回一个转换后的对象,默认为None。
- object_pairs_hook:与object_hook类似,但针对的是dict中的每一对键值,并返回转换后的值。
示例:
```python
import json
# 将JSON字符串解码成Python dict
json_data = '{"name": "Lucy", "age": 20}'
dict_data = json.loads(json_data)
print(dict_data) # 输出:{"name": "Lucy", "age": 20}
# 将JSON字符串解码成Python列表
json_data = '["Lucy", 20]'
list_data = json.loads(json_data)
print(list_data) # 输出:["Lucy", 20]
```
示例说明
以下是一个示例,使用JSON模块编码和解码一个包含Python对象的JSON字符串:
import json
# 编码
dict_data = {"name": "Lucy", "age": 20}
json_data = json.dumps(dict_data)
print(json_data)
# 解码
json_str = '{"name": "Lucy", "age": 20}'
dict_data = json.loads(json_str)
print(dict_data)
输出结果:
{"name": "Lucy", "age": 20}
{'name': 'Lucy', 'age': 20}
另外一个示例是从一个包含JSON数据的API获取数据,并将其解码为Python对象。假设我们要获取GitHub上的一份公共API:https://api.github.com/users/octocat/repos
import requests
import json
url = 'https://api.github.com/users/octocat/repos'
response = requests.get(url)
json_str = response.text
data = json.loads(json_str)
print(data)
输出结果:
[{'id': 1296269, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMjk2MjY5', 'name': 'Hello-World', 'full_name': 'octocat/Hello-World'...}]
以上就是Python的JSON模块的基本使用方法和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入解析Python编程中JSON模块的使用 - Python技术站