【Python标准库】json
1.json库是用来做什么的?
完全独立于程序语言的轻量文本数据交换格式,用来生成和解析json数据格式的库
2.json的2种数据结构
- 第一种:键值对
- 语法:{"key":value,,,,}
- 第二种:有序列表
3.json和python的数据类型比对
Python | JSON |
dict | object |
list,tuple | array |
str | string |
数字类型 | Number |
True | true |
False | false |
NONE | null |
4.json方法
反序列化:将json字符串转换为其他数据结构/对象
-
json.load(obj)
-
- 读取json文件并转换为python对象
- 应用场景:
- 读取json文件
-
with open("json_file.json") as fp: al = json.load(fp) print(al) 最终输出结果: {'name': 'Mona', 'age': 28, 'isFemale': True}
-
- 读取json文件
-
json.loads(obj)
- 将json字符串转换为python对象
序列化:将其他数据结构转换为json字符串
-
json.dump(obj,file[,indent][,ensure_ascii][,sort_keys][,separators])
- 将python对象转换为json字符串并写入文件中
- 应用场景:
- 写入json文件
-
import json dict = { 'name':'Mona', 'age':28,'isFemale':True } with open("json_file.json","w") as fp: json.dump(dict, fp) 最终生成json文件,内容如下: {"name": "Mona", "age": 28, "isFemale": true}
-
- 写入json文件
-
json.dumps(obj[,indent][,ensure_ascii][,sort_keys][,separators])
- 将Python对象转换为json字符串
- 参数indent是缩进空格
-
dict = { 'name':'Mona', 'age':28,'isFemale':True } j_dict = json.dumps(dict,indent=4) print(j_dict) 最终结果: { "name": "Mona", "age": 28, "isFemale": true }
-
- 参数ensure_ascii 非ascii的进行转移
- 默认为True
-
场景1: 使用默认值True import json dict = { 'name':'Mona', 'age':28,'isFemale':True,'com':'坚持' } j_dict = json.dumps(dict,indent=4,ensure_ascii=True) print(j_dict) 最终输出结果: { "name": "Mona", "age": 28, "isFemale": true, "com": "\u575a\u6301" } ---------------------------------------------------- 场景2: 使用False import json dict = { 'name':'Mona', 'age':28,'isFemale':True,'com':'坚持' } j_dict = json.dumps(dict,indent=4,ensure_ascii=False) print(j_dict) 最终输出结果: { "name": "Mona", "age": 28, "isFemale": true, "com": "坚持" }
-
- 默认为True
- 参数sort_keys 编码顺序输出
- 默认为False
-
场景1: 键按照字母顺序升序输出 import json dict = { 'name':'Mona', 'age':28,'isFemale':True,'com':'坚持' } j_dict = json.dumps(dict,indent=4,sort_keys=True) print(j_dict) 最终输出结果: { "age": 28, "com": "\u575a\u6301", "isFemale": true, "name": "Mona" }
-
- 默认为False