Python中的 json.dump()
JSON 的完整形式是 JavaScript Object Notation。这意味着由编程语言中的文本组成的脚本(可执行)文件用于存储和传输数据。 Python通过一个名为json
的内置包支持 JSON。要使用此功能,我们在Python脚本中导入 json 包。 JSON 中的文本是通过引用字符串完成的,该字符串包含{ }
内键值映射中的值。它类似于Python中的字典。
json.dump()
Python模块中的json
模块提供了一个名为dump()
的方法,它将Python对象转换为适当的 json 对象。它是dumps()
方法的一个轻微变体。
转储()和转储()之间的区别
dump() | dumps() |
---|---|
The dump() method is used when the Python objects have to be stored in a file. | The dumps() is used when the objects are required to be in string format and is used for parsing, printing, etc, . |
The dump() needs the json file name in which the output has to be stored as an argument. | The dumps() does not require any such file name to be passed. |
This method writes in the memory and then command for writing to disk is executed separately | This method directly writes to the json file |
Faster method | 2 times slower |
dump() 及其参数
Syntax: json.dump(d, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None)
参数:
- indent :它提高了 json 文件的可读性。可以传递给此参数的可能值只是双引号(
""
),任何整数值。简单的双引号使每个键值对出现在新行中。例子:
import json # python object(dictionary) to be dumped dict1 ={ "emp1": { "name": "Lisa", "designation": "programmer", "age": "34", "salary": "54000" }, "emp2": { "name": "Elis", "designation": "Trainee", "age": "24", "salary": "40000" }, } # the json file where the output must be stored out_file = open("myfile.json", "w") json.dump(dict1, out_file, indent = 6) out_file.close()
输出:
- skipkeys:如果键不是标准允许的类型,如 int、float、 字符串、None 或 bool,则在转储它们时会产生错误。为了避免这种情况,如果此参数设置为true 。
例子:
import json # python object(dictionary) to be dumped dict1 ={ ('addresss', 'street'):'Brigade road', } # the json file where the output must be stored out_file = open("myfile.json", "w") json.dump(dict1, out_file, indent = 6) out_file.close()
输出:
如果 skipkeys 未设置为 true,则会生成以下错误:
- 分隔符:此参数占用一个或两个值。第一个值指定将一个键值对与另一个分开的符号。下一个指定将值与其键分开的符号。
- sort_keys:此参数采用布尔值。如果设置为 True,则键按升序设置,否则,它们显示在Python对象中
- ensure_ascii:这个参数也只接受布尔值。如果未设置为 true,则非 ASCII字符将按原样转储到输出文件中。默认情况下,该值为true 。
请参阅下面的两个代码以了解差异。
示例 1:
# dictionary to be dumped d ={'lang':'??? ????'} with open('myfile.json', 'w', encoding ='utf8') as json_file: json.dump(d, json_file, ensure_ascii = False)
输出:
例2:如果设置为True,那么json文件的内容为:
import json # dictionary to be dumped d ={'lang':'??? ????'} with open('myfile.json', 'w', encoding ='utf8') as json_file: json.dump(d, json_file, ensure_ascii = True)
输出:
- allow_nan:有助于序列化浮点值的范围。
示例 1:
import json # dictionary to be dumped d ={ 'a':1, 'x':float('nan') } with open('myfile.json', 'w', encoding ='utf8') as json_file: json.dump(d, json_file, allow_nan=False)
输出:
示例2:如果设置为True,则不会产生错误。 json 文件中的内容将是:
import json # dictionary to be dumped d ={ 'a':1, 'x':float('nan') } with open('myfile.json', 'w', encoding ='utf8') as json_file: json.dump(d, json_file, allow_nan=True)
输出: