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 jsondict = {'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: 使用默认值Trueimport 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: 使用Falseimport 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