Python中json.load()和json.loads()的区别

2025 年 3 月 4 日 | 阅读 6 分钟

引言

Python 的 json 模块中的 json.load() 和 json.loads() 这两个函数都用于将 JSON 数据解析成 Python 对象。它们之间的区别在于它们的输入源。json.load() 函数在处理文件中的 JSON 数据时很有用,因为它可以从类似文件的对象(例如以二进制或文本模式打开的文件)读取数据。而 json.loads() 函数则用于从字符串读取 JSON 数据,前提是 JSON 数据已经作为字符串存在于内存中。json.load() 主要处理文件输入管理,而 json.loads() 则处理字符串操作。最终,这两种方法都完成相同的任务,即将 JSON 数据转换为 Python 对象,如字典或列表。

理解 'json.load()' 方法

'json.load()' 函数在 Python 的 json 模块中,它从一个类似文件的对象中读取 JSON 数据,并将其转换为等效的 Python 对象,例如 字典 或列表。通常,当您希望直接从包含数据的 JSON 文件中将 JSON 数据解析到程序中时,会使用它。该函数从一个打开的文件对象(例如使用 open() 创建)中读取 JSON 内容,并以 Python 可接受的格式返回数据。因此,它非常适合处理外部存储的 JSON 数据,如配置文件或 API。

语法

Python 中,可以使用 'json.load(file_object)' 语法从类文件对象中读取和解析 JSON 数据。在这种情况下,'file_object' 代表一个以二进制或文本模式(通常是使用 'open()' 以读取模式)打开的文件。使用此文件对象作为参数,'json.load()' 函数会从文件中获取 JSON 内容,并将其转换为合适的 Python 对象(如字典或列表)。此函数使得即使 JSON 数据存储在外部文件中,也能在程序中轻松访问和操作 JSON 数据。有了它的帮助,处理 JSON 文件变得更加容易。

示例 1

输出

上述代码的输出将取决于 data.json 文件的内容。此输出示例假设存在特定数据。

data.json 文件内容

输出

 
{'name': 'Alice', 'age': 30, 'city': 'New York'}   

说明

以下是使用 json.load() 从文件读取和解析 JSON 数据的示例。open() 函数通过以读取模式 ('r') 打开 data.json 文件来创建一个名为 file 的文件对象。将此文件对象传递给 json.load(file) 后,它会从文件中读取 JSON 内容并将其转换为合适的 Python 对象(例如字典)。现在,数据已被解析,并存储在程序的 data 变量中,可供进一步处理。最后,使用 print(data) 命令显示 JSON 数据转换后的 Python 字典表示。此方法简化了处理包含在文件中的 JSON 数据的工作。

示例 2

输出

 
Name: John, Age: 22, Major: Computer Science  
Name: Emma, Age: 21, Major: Mathematics  
Name: Lucas, Age: 23, Major: Physics     

说明

在此示例中,使用 json.load() 函数读取和解析了一个名为 students.json 的 JSON 文件,该文件包含一个学生对象列表。命令 open('students.json', 'r') 以读取模式打开文件,并创建一个名为 file 的文件对象。json.load(file) 在获得此文件对象后,会读取 JSON 数据并将其转换为 Python 字典列表。每个字典代表一个学生,具有以下特征:姓名、年龄和专业。接下来,代码使用 for 循环遍历此列表,将每个学生的数据以格式化的字符串形式打印出来。此方法可以轻松地查看和修改保存在文件中的 JSON 数据。

理解 'json.loads()' 方法

Python 的 json 模块中有一个名为 json.loads() 的 函数,它可以解析 JSON 格式的字符串,并将其转换为等效的 Python 对象,例如字典或列表。该方法通过解码传递给它的 JSON 字符串,轻松地在 Python 程序中操作数据。它经常用于 JSON 数据已作为字符串可用时的情况,例如从文本源读取数据或通过 Web API 获取数据时。与从文件读取的 json.load() 不同,json.loads() 直接处理字符串数据,因此对于动态或内联 JSON 解析非常有用。

语法

可以使用 json.loads(json_string) 语法将 JSON 格式的文本('json_string')解析为 Python 对象,例如字典或列表。该函数在接收包含有效 JSON 数据的字符串作为输入后,会提供相应的 Python 数据结构。当处理以字符串形式接收或存储的 JSON 数据时(例如从文本源或 Web API 检索的数据),可以轻松地在 Python 程序中进行访问和操作。

示例 1

这是使用 json.loads() 解析 JSON 字符串的示例

输出

 
{'name': 'Sophia', 'age': 28, 'city': 'Los Angeles'}   

说明

在此示例中,使用 json.loads() 函数将 JSON 字符串转换为 Python 字典。存储在 json_string 变量中的 JSON 数据包含表示个人信息的键值对。此 JSON 文本被传递到 json.loads(json_string) 函数中,该函数对其进行处理并生成一个 Python 字典,存储在 data 变量中。这使得可以使用 Python 的数据结构来处理 JSON 信息。最后使用 print(data) 显示生成的字典。这种方法在直接处理字符串中的 JSON 数据时非常有用,例如通过 Web 服务或 API 获取数据时。

示例 2

输出

 
Product: Laptop, Price: $999.99  
Product: Smartphone, Price: $499.99   

说明

在此示例中,使用 json.loads() 解析了一个包含对象列表的 JSON 字符串,这些对象代表产品。存储在 "json_string" 变量中的 JSON 字符串包含两个对象,键分别为 "product" 和 "price"。json.loads(json_string) 方法将此字符串转换为 Python 字典列表,然后将其存储在 products 变量中。接着,通过 for 循环遍历列表,将每个产品的详细信息以格式化的字符串形式打印出来。遵循此示例,可以轻松处理和显示通过 Web 服务等方式以 JSON 格式接收的数据,这演示了如何处理和操作包含多个记录的 JSON 数据。

结论

json.load() 和 json.loads() 是 Python 'json' 模块中的两个主要函数,使其成为处理 JSON 数据的有效工具。通过将 JSON 数据转换为 Python 对象,这些函数促进了其在应用程序中的操作和利用。json.load() 的目的是直接从类似文件的对象(例如使用 open() 函数打开的文件)读取 JSON 数据。如果您需要将 JSON 数据加载到 Python 程序中进行处理,并且这些数据存储在外部文件中(例如配置文件或数据导出),那么这是最佳选择。

相反,json.loads() 操作的是作为字符串提供的 JSON 数据。当解析来自在线服务、API 或任何其他类型的字符串格式数据的 JSON 时,它特别有用。尽管它们是为不同场景设计的,但 json.load()(用于基于文件的 JSON)和 json.loads()(用于基于字符串的 JSON)这两个函数都具有类似的功能。如果开发人员了解这些差异,就可以有效地处理各种场景下的 JSON 数据。

'json.load()' 和 'json.loads()' 是 Python 'json' 模块提供的处理 JSON 数据的两个关键过程。'json.loads()' 解析字符串中的 JSON,适用于直接以文本形式接收的数据(如来自 Web 源或 API),而 'json.load()' 从类文件对象读取 JSON 数据,非常适合管理存储在外部文件中的数据。这些过程通过将 JSON 转换为 Python 对象(如列表或字典)来实现灵活有效的数据操作。当用户了解这两个函数之间的区别并能根据 JSON 数据源选择合适的函数时,Python 应用程序可以更好地处理 JSON。