当我们需要将Python对象转换为JSON字符串时,我们可以使用Python内置的json模块。在使用json模块时,json.dumps()和json.dump()是两个常用的方法。它们之间有明显的区别,请看下文详解。
json.dumps()
json.dumps()方法用来将Python对象转换为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)
- obj:需要转换的Python对象
- skipkeys:如果dict对象含有非字符串类型的key,跳过处理该key的值
- ensure_ascii:转换中文字符,保证转换后的数据,其每个汉字都不会超出“\u0000-\u007f”的范围
- check_circular:检查循环引用,默认为True。如果指定为False,在转换对象时不会检查是否存在循环引用。
- allow_nan:如果obj中有一些不是float类型的值(比如NaN、Infinity、-Infinity),就会报错。如果将该参数设置为False,也会报错。如果将该参数设置为True,则会将这些不合法的值替换成null。
- cls:用于自定义对象的序列化器。
- indent:用于增加嵌套格式的缩进空格数。
- separators:指定分割各项之间的符号。
- default:用于异常处理的对象。
- sort_keys:按字典序对生成的json进行排序。
下面是一个将字典转换为JSON字符串的示例:
import json
person = {'name': 'Tom', 'age': 20, 'sex': '男', 'addr': '广州市'}
person_json = json.dumps(person)
print(person_json)
输出结果:
{"name": "Tom", "age": 20, "sex": "\u7537", "addr": "\u5e7f\u5dde\u5e02"}
可以看到,person对象成功地转换为了JSON字符串。
json.dump()
json.dump()方法用来将Python对象转换为JSON格式的字符串,并将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)
- obj:需要转换的Python对象
- fp:一个包含了一个或多个文件描述符的可写的文件对象
- skipkeys:如果dict对象含有非字符串类型的key,跳过处理该key的值
- ensure_ascii:转换中文字符,保证转换后的数据,其每个汉字都不会超出“\u0000-\u007f”的范围
- check_circular:检查循环引用,默认为True。如果指定为False,在转换对象时不会检查是否存在循环引用。
- allow_nan:如果obj中有一些不是float类型的值(比如NaN、Infinity、-Infinity),就会报错。如果将该参数设置为False,也会报错。如果将该参数设置为True,则会将这些不合法的值替换成null。
- cls:用于自定义对象的序列化器。
- indent:用于增加嵌套格式的缩进空格数。
- separators:指定分割各项之间的符号。
- default:用于异常处理的对象。
- sort_keys:按字典序对生成的json进行排序。
下面是将字典转换为JSON字符串,并将JSON字符串写入文件的示例:
import json
person = {'name': 'Tom', 'age': 20, 'sex': '男', 'addr': '广州市'}
with open('person.json', 'w', encoding='utf-8') as f:
json.dump(person, f, ensure_ascii=False)
执行上述代码后,会在当前目录下生成一个名为person.json的文件,文件中内容为:
{"name": "Tom", "age": 20, "sex": "男", "addr": "广州市"}
总结
总的来说,json.dumps()方法将Python对象转换为JSON格式的字符串,json.dump()方法将Python对象转换为JSON格式的字符串,并将该字符串写入文件中。在使用这两个方法时,需要注意使用时传递的参数不同。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python json.dumps() json.dump()的区别详解 - Python技术站