如何在Python中写入JSON?
在这篇文章中,我们将学习在Python中写入JSON的不同方法。
转换规则
将Python对象转换为JSON数据时,dump()方法遵循以下转换规则:
Python |
JSON |
---|---|
dict |
object |
list, tuple |
array |
str |
string |
int, float |
number |
True |
true |
False |
false |
None |
null |
将字典写入JSON文件
json.dump()函数的作用是将Python对象整理成JSON格式的流,并写入指定的文件。
语法
dump(obj, fp, *, skipkeys=False, check_circular=True, allow_nan=True, indent=None, separators=None, default=None, sort_keys=False, **kw)
参数
obj − obj 是一个对象,它被整理成JSON格式的流。
fp − fp 也称为文件对象,用于存储JSON数据。
skipkeys − 默认值为False。它忽略字典中不是基本类型的键。否则,它将抛出TypeError。
check_circular − 默认值为True。它的主要任务是为容器类型执行循环引用检查。这有时会导致OverflowError。
allow_nan − 默认值为True。如果为False,则序列化超出范围的浮点值将导致ValueError。它默认使用JavaScript等效项,例如-NaN、Infinity、-Infinity。
indent − 用于以指定的缩进格式进行漂亮的打印。
separators − 这些是JSON中使用的分隔符。
default − 当对象无法序列化时调用此函数。它要么返回对象的JSON编码版本,要么抛出TypeError。如果没有指定类型,则默认抛出TypeError。
sort_keys − 默认值为False。如果为True,则字典的输出将按键排序。
示例
以下程序使用json.dump()函数将给定的字典转换为JSON文件:
# importing json module import json # creating a dictionary inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # opening a JSON file in write mode with open('outputfile.json', 'w') as json_file: # writing the dictionary data into the corresponding JSON file json.dump(inputDict, json_file)
输出
执行上述程序将生成以下输出:
{"website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode": "503004"}
将创建一个名为outputfile.json的文件,其中包含上述字典数据。
使用Indent参数
使用dump()方法的indent参数进行漂亮的打印。
示例
以下程序使用json.dump()函数和indent参数将给定的字典转换为具有缩进的漂亮JSON文件:
# importing JSON module import json # creating a dictionary inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # opening a JSON file in write mode with open('outputfile.json', 'w') as json_file: # writing the dictionary data into the corresponding JSON file # by adding indent parameter to make it attractive with proper indentation json.dump(inputDict, json_file, indent=5)
输出
执行上述程序将生成以下输出:
{ "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode": "503004" }
将创建一个名为outputfile.json的文件,其中包含上述字典数据,并具有适当的缩进,使其更美观。
对JSON中的键进行排序
我们可以使用sort_keys = True参数按字母顺序对字典的键进行排序。
以下程序使用json.dump()函数和sort_keys参数将给定的字典转换为具有缩进和排序键的JSON文件:
# importing JSON module import json # creating a dictionary inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # opening a JSON file in write mode with open('outputfile.json', 'w') as json_file: # writing the dictionary data into the corresponding JSON file # indent parameter- to make it attractive with proper indentation # sort_keys- sorts the dictionary keys alphabetically json.dump(inputDict, json_file, indent=5, sort_keys=True)
输出
{ "Address": "hyderabad", "Age": 25, "authorName": "xyz", "pincode": "503004", "website": "Tutorialspoint" }
如上所示,键现在按字母顺序排序。
Separators是可以使用的附加参数。在这里,您可以使用任何您喜欢的分隔符(", ",": ",",",":")。
将Python列表转换为JSON
示例
以下程序使用dumps()函数将Python列表转换为JSON字符串:
# importing JSON module import json # input list inputList = [2, 4, 6, 7] # converting input list into JSON string using dumps() function jsonString = json.dumps(inputList) # printing the resultant JSON string print(jsonString) # printing the type of resultant JSON string print(type(jsonString))
输出
[2, 4, 6, 7] <class 'str'>
将Python字典列表转换为JSON
示例
以下程序使用dumps()函数将Python字典列表转换为JSON字符串。
# importing json module import json # input list of dictionaries list_dict = [{'x':10, 'y':20, 'z':30}, {'p':40, 'q':50}] # converting list of dictionaries into json string jsonData = json.dumps(list_dict) # printing the JSON data print(jsonData)
输出
[{"x": 10, "y": 20, "z": 30}, {"p": 40, "q": 50}]
将Python列表的列表转换为JSON
示例
以下程序使用dumps()函数将Python列表的列表转换为JSON字符串:
# importing JSON module import json # input list of lists list_of_list = [[{'x':10, 'y':20, 'z':30}], [{'p':40, 'q':50}]] # converting a list of list into JSON string jsonString = json.dumps(list_of_list) # printing the resultant JSON string print(jsonString)
输出
[[{"x": 10, "y": 20, "z": 30}], [{"p": 40, "q": 50}]]
结论
本文包含各种将各种数据格式转换为JSON文件、JSON字符串等的技巧。还深入介绍了用于将任何形式的可迭代对象转换为JSON的json.dumps()。