如何在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()。

更新于:2023年1月16日

467 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告