Python json库的使用
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,常用于前后端之间的数据交换。Python中提供了json库用于将Python对象转换成JSON格式的字符串,或将JSON格式的字符串转换成Python对象。
JSON格式
先来看一下JSON格式的规则。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号保存对象
- 方括号保存数组
以下是一个简单的JSON对象的例子:
使用json库将Python对象转JSON字符串
json库中的dumps()
方法用于将Python对象转换为JSON格式的字符串。
例如,将一个字典对象转换为JSON字符串:
在上面的代码中,通过dumps()
方法将一个字典对象转换为JSON格式的字符串。该方法的参数dict_obj
指定要转换的Python对象。
使用json库将JSON字符串转Python对象
json库中的loads()
方法用于将JSON格式的字符串转换为Python对象。
例如,将一个JSON字符串转换为Python对象:
在上面的代码中,通过loads()
方法将一个JSON格式的字符串转换为Python对象。该方法的参数json_str
指定要转换的JSON字符串。
读取JSON文件内容
将JSON格式的数据保存在文件中后,可以使用json库读取并转换为Python对象。
例如,读取data.json
文件中的数据:
在上面的代码中,使用open()
函数打开data.json
文件,并通过read()
方法读取JSON字符串。然后使用json库中的loads()
方法将JSON字符串转换为Python对象。
写入Python对象到JSON文件
使用json库还可以将Python对象写入到JSON文件中。
例如,将一个Python对象写入到data.json
文件中:
在上面的代码中,使用json.dump()
方法将Python对象dict_obj
写入到data.json
文件中。该方法的参数f
指定保存数据的文件对象。
自定义JSON编码器
在将Python对象转换为JSON字符串时,json库提供了默认的编码规则。如果需要特定的编码规则,可以自定义JSON编码器。自定义编码器是通过继承json.JSONEncoder
来实现的。
例如,将一个自定义的类Person
转换为JSON字符串:
在上面的代码中,自定义了一个类Person
,并继承了json.JSONEncoder
,实现了一个default()
方法。该方法在转换Python对象为JSON字符串时被调用,如果对象是Person
类的实例,就将其转换为JSON格式。否则,调用父类的default()
方法,在转换为默认格式的JSON字符串。
在将person_obj
对象转换为JSON字符串时,通过cls
参数指定使用自定义的编码器PersonEncoder
。
自定义JSON解码器
在将JSON字符串转换为Python对象时,json库提供了默认的解码规则。如果需要特定的解码规则,可以自定义JSON解码器。自定义解码器是通过继承json.JSONDecoder
来实现的。
例如,自定义解码器将JSON字符串转换为一个自定义的类Person
:
在上面的代码中,自定义了一个类Person
,并继承了json.JSONDecoder
,实现了一个decode()
方法。该方法在将JSON字符串转换为Python对象时被调用,将JSON格式的字典转换为Person
类的实例。
在将json_str
字符串转换为Python对象时,通过cls
参数指定使用自定义的解码器PersonDecoder
。
小结
本文介绍了Python json库的基本用法,包括将Python对象转换成JSON字符串,将JSON字符串转换成Python对象,读取JSON文件内容以及将Python对象写入JSON文件中。还介绍了如何自定义JSON编码器和解码器。
json库的简单易用,既方便又灵活,适合用于前后端数据交换、数据存储等场景。