import json
json 一种轻量级的数据交换格式。
一、JSON 的值数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null{
"title": "JSON Example",
"nested": {
"someInteger": 7,
"someBoolean": true,
"someArray": Array[3][
"list of",
"fake strings",
"and fake keys"
]
}
}
二、json 模块
json 模块提供了 python 对象的序列化和反序列化功能。序列化:
将一个 python 对象编码转换为 json 字符串。反序列化:
将 json 字符串解码转换为 python 对象。
json 模块提供了4个方法:dumps()
dump()
loads()
load()
其中 loads() 和 load() 方法用于 python 对象的反序列化,dumps() 和 dump() 方法用于 python 对象的序列化。
① json.loads()
把 json 格式字符串解码转换成 python 对象。
import json
str_list = "[1, 2, 3, 4]"
str_dict = "{'city': '长沙', 'name': '数据云团'}"
json.loads(str_list)
>>>[1, 2, 3, 4]
json.loads(str_dict)
>>>{'city': '长沙', 'name': '数据云团'}
② json.dumps()
将 python 类型编码为 json 字符串,返回一个 str 对象。
import json
demo_list = [1, 2, 3, 4]
demo_tuple = (1, 2, 3, 4)
demo_dict = {'city': '长沙', 'name': '数据云团'}
json.dumps(demo_list)
>>>[1, 2, 3, 4]
json.dumps(demo_tuple)
>>>[1, 2, 3, 4]
# 注意:json.dumps() 处理中文时默认使用的 ASCII 编码,会导致中文无法正常显示
# 记住:处理中文时,添加参数 ensure_ascii=False 来禁用 ASCII 编码
print(json.dumps(demo_dict, ensure_ascii=False))
③ json.load()
读取文件中 json 形式的字符串元素,转化成 python 类型。
它与 json.loads() 方法的区别在于:
一个读取的是字符串;一个读取的是文件。# 读取一个名为 listStr.json 和 dictStr.json 的文件内容
import json
str_list = json.load(open("listStr.json"))
print(str_list)
str_dict = json.load(open("dictStr.json"))
print(str_dict)
④ json.dump()
将 python 内置类型序列化为 json 对象后写入文件。
它与 json.dumps() 方法的区别在于写入的是文件还是字符串。
import json
str_list = [{"city": "长沙"}, {"name": "数据云团"}]
json.dump(str_list, open("listStr.json", "w"), ensure_ascii=False)
str_dict = {"city": "长沙", "name": "数据云团"}
json.dump(str_dict, open("listStr.json", "w"), ensure_ascii=False)