1. JSON
-
JSON 是用于存储和交换数据的语法,是一种轻量级的数据交换格式。
-
JSON的使用场景
- 接口数据传输
- 序列化
- 配置文件(由于可读性差,有更好的语言来替代)
2. JSON 结构
- 键值对形式
- 数组形式
{
"language": [
{
"name": "python",
"url": "https://www.python.org/"
},
{
"name": "java",
"url": "https://www.java.com/zh-CN/"
}
]
}
3. python 与 JSON 数据类型对应
Python | JSON | 说明 |
---|---|---|
dict | object | 字典 |
list,tuple | array | 序列 |
str | string | 字符串 |
int,float | number | 数字类型 |
True | true | 布尔值True |
False | false | 布尔值False |
None | null | 空值 |
因为python和json中的数据类型存在差异,因此python中的数据不能直接被json使用,需要进行转换才可正常使用。
4. json 库
- 可以从字符串或文件中解析 JSON
- 该库解析 JSON 后将其转为 Python 字典或者列表
5. 常用方法
dumps()
:将 Python 对象编码成 JSON 字符串loads()
:解码 JSON 数据,该函数返回 Python 对象dump()
: Python 对象编码,并将数据写入 json 文件中load()
:从 json 文件中读取数据并解码为 Python 对象
import json
# 定义 python 结构
data = [{'a': 1, 'b': '2', 'c': True, 'd': False, 'e': None }]
print(type(data))
#打印结果:list
# 将 python 对象编码为 JSON 字符串
json_data = json.dumps(data)
print(type(json_data),json_data)
#打印结果:<class 'str'> [{"a": 1, "b": "2", "c": true, "d": false, "e": null}]
# 将 JSON 字符串解码为 python 对象
python_data = json.loads(json_data)
print(type(python_data),python_data)
#打印结果:<class 'list'> [{'a': 1, 'b': '2', 'c': True, 'd': False, 'e': None}]
# 写入 JSON 数据,在代码当前目录生成一个 data.json 的文件
with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据,读取 json 文件并解码成 python 对象
with open('data.json', 'r') as f:
data = json.load(f)
6. dumps 常用参数
indent
:根据数据格式缩进显示,默认为 None,没有缩进ensure_ascii
:对中文使用 ASCII 编码,默认为 True
import json
data = {
'a': 1,
'b': '高胖胖',
'c': True,
'd': False,
'e': None }
python_data = json.dumps(data, indent=4, ensure_ascii=False)
print(python_data)
"""
打印结果:
{
"a": 1,
"b": "高胖胖",
"c": true,
"d": false,
"e": null
}
"""