Python3内置json模块详解
什么是json?
JSON是JavaScript Object Notation的缩写,是一种轻量级的数据交换格式。它基于JavaScript编程语言的一个子集,因此易于使用。JSON格式最初是为了简化JavaScript编写的(即JavaScript对象的表示法),但是现在已经成为了一种独立的数据交换格式。JSON数据以键值对的形式存储,数据之间用逗号分隔。
json模块的作用
json模块为Python内置的处理JSON数据格式的模块,它提供了两种方法:
- 编码:将Python对象转换为JSON格式的字符串
- 解码:将JSON格式的字符串转换为Python对象
json模块主要有以下几个函数:
-
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
将Python对象编码成JSON格式字符串,并写入文件(或类文件对象)中。
- obj: Python对象。
- fp: 文件(或类文件对象)。
- skipkeys(可选): 如果展示时遇到了不是字符串的键值对,则跳过。默认为False。
- ensure_ascii(可选): 仅将非ASCII字符转换为\uXXXX转义序列。默认为True。
- check_circular (可选): 检测循环引用。默认为True。
- allow_nan (可选):允许编码float、NaN以及Infinity。默认为True。
- cls (可选):编码器(继承JSONEncoder)类。
- indent (可选): 缩进用于展示(默认为None,即没有缩进)。如2、3等。
- separators (可选):控制项之间的分隔符。默认为(",", ":")。
- default (可选):在无法序列化对象时调用的函数。
- sort_keys (可选):是否按照字典键排序。
-
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
将Python对象编码成JSON格式字符串,不写入文件。
-
json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
将JSON格式字符串读取并解码为Python对象。
- fp: 文件(或类文件对象)。
- cls (可选):指定解码器(继承JSONDecoder)类。
- object_hook (可选):解码器(继承JSONDecoder)类的钩子函数。
- parse_float (可选):它被解析器调用以解析浮点数(默认为 float)。
- parse_int (可选):它被解析器调用以解析整数(默认为 int)。
- parse_constant (可选):JSON解析器可以调用以解析常数字符串(默认为 raise ValueError)。
- object_pairs_hook (可选):从解码器返回词典的可调用对象。默认为 dict。
-
json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
将JSON格式字符串解码为Python对象。
json模块的使用
- 编码
将Python对象转换为JSON格式字符串。
import json
person = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# dumps()函数将Python对象编码为JSON格式字符串
json_str = json.dumps(person)
print(json_str)
输出:
{"name": "Tom", "age": 18, "gender": "male"}
- 解码
将JSON格式字符串转换为Python对象。
import json
json_str = '{"name": "Tom", "age": 18, "gender": "male"}'
# loads()函数将JSON格式字符串解码为Python对象
person = json.loads(json_str)
print(person)
输出:
{'name': 'Tom', 'age': 18, 'gender': 'male'}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3内置json模块编码解码方法详解 - Python技术站