如何在 Python 中编写 JSON?

pythonserver side programmingprogramming

在本文中,我们将学习在 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() 也进行了深入介绍。


相关文章