如何在 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。它会忽略不是基本类型的 dict 的键。否则,它会抛出 TypeError。
check_circular − 默认值为 True。它的主要任务是对容器类型执行循环引用检查。这有时会在 OverflowError 中得到输出结果。
allow_nan − 默认值为 True。如果为 false,序列化超出范围的浮点值将导致 ValueError。默认情况下,它使用 JavaScript 等效项,如 -NaN、Infinity、-Infinity。
indent − 它用于按指定顺序进行良好打印。
separators − 这些是 JSON 中使用的分隔符。
default − 当对象序列化失败时调用此函数。它要么返回对象的 JSON 编码版本,要么抛出 TypeError。如果没有给出类型,则默认抛出 TypeError。
sort_keys − 它的默认值为 False。如果为真,则字典的输出将按键排序。
示例
以下程序使用 json.dump() 函数将给定的字典转换为 JSON 文件 −
# 导入 json 模块 导入 json # 创建字典 inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # 以写入模式打开 JSON 文件 with open('outputfile.json', 'w') as json_file: # 将字典数据写入相应的 JSON 文件 json.dump(inputDict, json_file)
输出
执行时,上述程序将生成以下输出 -
{"website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode": "503004"}
将创建包含上述字典数据的文件 outputfile.json。
使用缩进参数
使用方法 dump() 的缩进参数进行美观的打印。
示例
以下程序将给定的字典转换为使用 json.dump() 函数和 indent 参数创建一个漂亮的 JSON 文件并进行缩进 -
# 导入 JSON 模块 import json # 创建字典 inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # 以写入模式打开 JSON 文件 with open('outputfile.json', 'w') as json_file: # 将字典数据写入相应的 JSON 文件 # 通过添加 indent 参数使其具有适当的缩进,从而更具吸引力 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 文件−
# 导入 JSON 模块 import json # 创建字典 inputDict = { "website": "Tutorialspoint", "authorName": "xyz", "Age": 25, "Address": "hyderabad", "pincode":"503004" } # 以写入模式打开 JSON 文件 with open('outputfile.json', 'w') as json_file: # 将字典数据写入相应的 JSON 文件 # indent 参数 - 通过适当的缩进使其更具吸引力 # sort_keys- 按字母顺序对字典键进行排序 json.dump(inputDict, json_file, indent=5, sort_keys=True)
输出
{ "Address": "hyderabad", "Age": 25, "authorName": "xyz", "pincode": "503004", "website": "Tutorialspoint" }
如上所示,键现在按字母顺序排序。
分隔符是可以使用的附加参数。在此,您可以使用任何您喜欢的分隔符(",",":",",",":")。
将 Python 列表转换为 JSON
示例
以下程序使用 dumps() 函数将 Python 列表转换为 JSON 字符串 -
# 导入 JSON 模块 import json # 输入列表 inputList = [2, 4, 6, 7] # 使用 dumps() 函数将输入列表转换为 JSON 字符串 jsonString = json.dumps(inputList) # 打印结果 JSON 字符串 print(jsonString) # 打印结果 JSON 字符串的类型 print(type(jsonString))
输出
[2, 4, 6, 7] <class 'str'>
将目录 Python 列表转换为 JSON
示例
以下程序将目录 Python 列表转换为 JSON 字符串。使用 dumps() 函数 −
# 导入 json 模块 import json # 输入字典列表 list_dict = [{'x':10, 'y':20, 'z':30}, {'p':40, 'q':50}] # 将字典列表转换为 json 字符串 jsonData = json.dumps(list_dict) # 打印 JSON 数据 print(jsonData)
输出
[{"x": 10, "y": 20, "z": 30}, {"p": 40, "q": 50}]
将 Python 列表列表转换为 JSON
示例
以下程序使用 dumps() 函数将 Python 列表列表转换为 JSON 字符串 -
# 导入 JSON 模块 import json # 输入列表列表 list_of_list = [[{'x':10, 'y':20, 'z':30}], [{'p':40, 'q':50}]] # 将列表列表转换为 JSON 字符串 jsonString = json.dumps(list_of_list) # 打印结果 JSON 字符串 print(jsonString)
输出
[[{"x": 10, "y": 20, "z": 30}], [{"p": 40, "q": 50}]]
结论
本文包含将各种数据格式转换为 JSON 文件、JSON 字符串等的各种技术。用于将任何形式的可迭代对象转换为 JSON 的 json.dumps() 也进行了深入介绍。