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)