用 Python 将 JSON 写入文件

Vaibhav Vaibhav 2022年4月14日 2021年4月29日
用 Python 将 JSON 写入文件

JSON 是一种轻量级且人类可读的文件格式,在行业中大量使用。JSON 代表 JavaScript Object Notation。顾名思义,JSON 在 Web 开发人员中非常流行,并且在 Web 应用程序中大量使用以从服务器或其他应用程序发送和检索数据。

Python 随附了许多内置的软件包或模块,并通过 Internet 提供了许多外部模块供我们使用。有趣的是,它还具有一个内置模块 json,用于处理 JSON 数据。

在 Python 中,可以用两种方式表示 JSON。首先,作为字符串。JSON 字符串如下所示。

jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'

在将 JSON 表示为字符串时,请确保仅使用双引号("")来包装键和字符串值。JSON 不支持单引号,如果使用单引号,则会引发错误。

第二种方法是使用 Python 对象或俗称的 Python 字典。它具有与 JSON 类似的语法。

以 Python 字典的形式表示的 JSON 看起来像这样。

jsonObject = {
    "name": "DelftStack",
    "email": "DelftStack@domain.com",
    "age": 20,
    "country": "Netherlands", 
    "city": "Delft"
}

同样,请确保仅使用双引号。

使用 Python 中的 json 模块将 JSON 写入文件

假设你有一个以字符串形式存储 JSON 的变量。因此,要将其写入 JSON 文件,你可以使用以下代码。

import json

fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)

file = open(fileName, "w")
json.dump(jsonString, file)
file.close()

首先,我们导入了 json 模块。然后,我们将 JSON 文件名和 JSON 字符串本身存储在两个变量中。然后,我们将以在写入模式下选择的名称创建并打开一个新文件。

然后,我们使用 json 模块中的 loads 函数将 JSON 字符串转换为 python 字典以将其写入文件。该函数接受有效的 JSON 字符串,并将其转换为 Python 字典。

请注意,如果为此函数提供了无效的字符串,则会引发 json.decoder.JSONDecodeError 错误。因此,请确保你输入正确的字符串,或者可以使用 try-except-finally 块进行错误处理。

接下来,我们使用 json 模块提供给我们的 dump() 方法。此方法接受 python 字典和文件描述符作为其参数,并将字典的数据写入文件。

当且仅当文件未以二进制格式打开时,才可以使用 dump() 方法,即,"wb""rb"将不起作用并导致 TypeError

最后,我们关闭文件,程序退出。根据你在程序中定义的名称的 JSON 文件将在当前目录中创建。

如果工作目录中存在具有相同名称和相同扩展名的文件,则该文件的内容将被覆盖。

现在,假设你希望将 Python 对象或 Python 字典写入 JSON 文件。在这种情况下,请参考以下代码段。

import json

fileName = "my-data.json"
jsonObject = {
    "name": "DelftStack",
    "email": "DelftStack@domain.com",
    "age": 20,
    "country": "Netherlands", 
    "city": "Delft"
}

file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()

在这种情况下,我们已经有了 Python 对象或字典,并且如上所述,dump() 接受字典作为参数并将其写入文件描述符。因此,我们以写入模式打开文件,使用 dump() 方法将数据写入文件,然后关闭文件。

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相关文章 - Python JSON