Python中的json模块用于处理JSON数据,提供了将Python对象转换为JSON字符串的方法(dumps),以及将JSON字符串解析为Python对象的方法(loads)。
以下是json模块的一些常用方法:
1、将Python对象obj转换为JSON字符串。
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)
可以设置一些可选参数,
skipkeys(bool):
默认为False,如果设置为True,则字典中缺少键的项将被跳过,而不是引发KeyError异常。
ensure_ascii(bool):
默认为True,如果设置为True,则输出的JSON字符串只包含ASCII字符。如果设置为False,则输出的JSON字符串可以包含非ASCII字符。
check_circular(bool):
默认为True,如果设置为True,则在检测到循环引用时会引发TypeError异常。如果设置为False,则不检查循环引用。
allow_nan(bool):
默认为True,如果设置为True,则允许NaN、Infinity和-Infinity这些特殊浮点值。如果设置为False,则不允许这些特殊浮点值。
cls(class):可选参数,
指定一个可调用对象来构造结果字符串。通常不需要使用此参数。
indent(int):可选参数,
指定缩进空格数。如果设置了该参数,则生成的JSON字符串将按照指定的缩进格式进行格式化。
separators(str):可选参数,
指定分隔符。如果设置了该参数,则生成的JSON字符串将按照指定的分隔符进行格式化。
default(callable):可选参数,
指定一个函数,当遇到无法序列化的对象时,将调用该函数并返回其结果。
sort_keys(bool):可选参数,
指定是否对字典的键进行排序。如果设置为True,则生成的JSON字符串中的字典键将按字母顺序排序。
**kw:可选参数,
用于传递其他关键字参数。
示例如下:
import json
data = {
"name": "张三",
"age": 30,
"city": "北京"
}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
2、将JSON字符串s解析为Python对象
json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None,
parse_constant=None, object_pairs_hook=None, **kw)
可以设置一些可选参数,
s(str)
需要解析的JSON字符串。
encoding(str, optional)
指定编码方式,默认为None。
cls(class, optional)
指定解析后的对象类型,默认为None。
object_hook(callable, optional)
指定一个函数,用于转换字典中的值,默认为None。
parse_float(callable, optional)
指定一个函数,用于解析浮点数,默认为float()。
parse_int(callable, optional)
指定一个函数,用于解析整数,默认为int()。
parse_constant(callable, optional)
指定一个函数,用于解析常量,默认为None。
object_pairs_hook(callable, optional)
指定一个函数,用于转换字典中的键值对,默认为None。
**kw
可选参数,用于传递其他关键字参数
示例如下
import json
json_str = '{"name": "张三", "age": 30, "city": "北京"}'
data = json.loads(json_str)
print(data)
3、将Python对象obj序列化为JSON字符串并写入文件fp
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)
可以设置一些可选参数
如indent表示缩进空格数等。
示例如下
import json
data = {
"name": "张三",
"age": 30,
"city": "北京"
}
with open('data.json', 'w') as f:
json.dump(data, f, ensure_ascii=False)
4、从文件fp中读取JSON字符串并解析为Python对象
json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None,
parse_constant=None, object_pairs_hook=None, **kw)
可以设置一些可选参数,
同上
示例如下
import json
with open('data.json', 'r') as f:
data = json.load(f)
print(data)