总目录
一、json库的介绍
Python 的 json
库是一个非常常用的库,用于处理 JSON 数据。以下是 json
库的基本功能:
编码(将 Python 对象转换为 JSON 字符串)
解码(将 JSON 字符串转换为 Python 对象)
读写文件
编码器和解码器
二、编码
使用json.dumps()函数,将python对象转换为字符串
三、解码
使用json.loads()将字符串转换为python对象
四、读写文件
(一)将数据写入json文件
使用json.dump()将 Python 对象写入文件,文件以 JSON 格式保存。
其中:
indent=4****参数用于美化输出的 JSON 文件,使其具有可读性的缩进。
(二)从json文件读取,获得python对象
使用json.load()函数,将 JSON 字符串解码成 Python 对象。
五、编码器和解码器
这个比较复杂,牵扯到新建python对象:类、继承、init()函数等内容,请先对以上内容进行了解,再往下看。
(一)创建一个新的python类:NewPerson
通过实例化,可以通过点操作符调用其内部属性
(二)创建新的编码器和解码器
新建NewEncoder()和NewDecoder()函数,来转换指定上面创建的NewPerson数据
# 自定义 JSON 编码器
class NewEncoder(json.JSONEncoder):
def default(self, obj):
# 检查 obj 是否是 NewPerson 类的实例
if isinstance(obj, NewPerson):
# 如果是,返回一个字典表示该对象
return {'name': obj.name, 'age': obj.age, '__New__': True}
# 如果 obj 不是 NewPerson 实例,则调用基类的 default 方法
return json.JSONEncoder.default(self, obj)
# 自定义 JSON 解码器
class NewDecoder(json.JSONDecoder):
def __init__(self):
# 调用基类的构造函数,并传入自定义的对象钩子函数
super().__init__(object_hook=self.object_hook)
# 定义对象钩子函数,用于处理解码后的字典对象
def object_hook(self, obj):
# 检查字典中是否包含 '__New__' 键
if '__New__' in obj:
# 如果包含,使用字典中的数据创建一个 NewPerson 对象
return NewPerson(obj['name'], obj['age'],obj['frends'])
return obj
(三)执行NewPerson的编码和解码
n_data= NewPerson('a',2,('b','c','d'))
#编码
new_json = json.dumps(n_data, cls=NewEncoder)
print(new_json)
#解码
decoded_new_person= json.loads(new_json, cls=NewDecoder)
print(type(decoded_new_person))