JSON 代表 JavaScript 对象表示法。虽然其名称表明它与 JavaScript 编程语言相关,但 JSON 格式与语言无关,并且经常用于许多不同的编程语言。

什么是 JSON 文件?

JSON 文件通常用于在计算机之间传输数据。例如,当从 API 下载文件时,您经常需要处理 JSON 文件。这里有一篇很棒的文章,解释了如何 使用 Python 从 API 下载文件 .

以下是 JSON 文件的示例:

{
	"employee": [
		{
			"FirstName": "John",
			"LastName": "Doe",
			"Age": "29",
			"Profession": "Engineer"

		},
		{
			"FirstName": "Jane",
			"LastName": "Doe",
			"Age": "27",
			"Profession": "Doctor"
		}
	]
}

以 JSON 格式存储数据的文件称为 JSON 文件。这些文件基于文本,易于阅读且易于处理 - 所有这些都使它们非常受欢迎。

在本文中,我们将学习如何在 Python 中将字符串转换为 JSON 以及如何从 Python 对象创建 JSON 文件。

使用 Python 处理 JSON 文件

Python 有一个内置库, json 它提供了处理 JSON 文件的简单而有效的方法。让我们看一些示例,演示如何 字符串转换为 JSON 以及反之亦然。

从 JSON 到 Python 对象:反序列化

以下是 JSON 字符串:

>>> example = '{"FirstName":"John", "LastName":"Doe","Age":29, "Profession":"Engineer"}'

我们可以使用 loads() 的方法 json 将此字符串转换为 Python 对象:

>>> import json
>>> myobject = json.loads(example)

我们刚刚将 JSON 编码的数据转换为 Python 对象。此过程称为反序列化。生成的 Python 对象是字典。Python 字典由键值对组成,我们可以使用键轻松访问其项目。例如,如果我们想访问 FirstName 中的 myobject ,我们写:

>>> myobject["FirstName"]

'John'

如果我们有一个 JSON 文件并想将其转换为 Python 对象,则可以使用该 load() 方法。快速浏览一下文章开头的“员工”JSON 文件。以下代码块读取此文件并将其保存到 Python 字典中。

>>> with open("employee.json", "r") as read_file:
...     employee = json.load(read_file)
...
>>> print(employee)

{'employee': [{'FirstName': 'John', 'LastName': 'Doe', 'Age': '29', 'Profession': 'Engineer'}, {'FirstName': 'Jane', 'LastName': 'Doe', 'Age': '27', 'Profession': 'Doctor'}]}

现在 employee 是一个 Python 字典对象。

强调 json 库的 load( ) 和 loads() 方法之间的区别非常重要。load 方法用于从 JSON 文件创建 Python 对象 ,而 loads() 方法将 JSON 字符串转换为 Python 对象。

从 Python 对象到 JSON 字符串:序列化

就像我们可以从 JSON 文件创建 Python 对象一样,我们可以将 Python 对象转换为 JSON 字符串或文件。这个过程称为序列化。

dumps() 方法将 Python 字典转换为 JSON 字符串。在反序列化部分,我们创建了一个名为的字典 myobject 。它可以转换回 JSON 字符串,如下所示:

>>> json.dumps(myobject)
'{"FirstName": "John", "LastName": "Doe", "Age": 29, "Profession": "Engineer"}'

输出是一个字符串(注意大括号周围的单引号),因此我们无法像使用字典那样访问特定的键值对。

这个非常简单的字符串并不难读。但是,JSON 字符串可能更长,并且有嵌套部分。对于这种情况,该 dumps() 方法提供了一种更易读的打印方式。我们可以通过设置可选的 indent 参数来漂亮地打印此字符串:

>>> print(json.dumps(myobject, indent=3))

{
   "FirstName": "John",
   "LastName": "Doe",
   "Age": 29,
   "Profession": "Engineer"
}

dumps() 方法还有一个按键排序的参数:

>>> print(json.dumps(myobject, indent=3, sort_keys=True))

{
   "Age": 29,
   "FirstName": "John",
   "LastName": "Doe",
   "Profession": "Engineer"
}

JSON 文件通常用于序列化(pickling),例如当您想在应用程序运行之间保留一些数据时。您可以 在这篇文章中了解有关对象序列化的更多信息 .

使用 dump() 创建 JSON 文件

dumps() 方法将 Python 对象转换为 JSON 格式的字符串。我们还可以从存储在 Python 字典中的数据创建 JSON 文件。执行此任务的方法是 dump() .

让我们使用 dump() 创建 JSON 文件的方法。我们将使用上一节中创建的员工字典:

with open("new_employee.json", "w") as write_file:
    json.dump(employee, write_file, indent=4)

在当前工作目录中 new_employee.json 创建一个名为的文件 dump() 方法序列化 Python 字典。

dump() 方法接受两个位置参数。第一个是存储要序列化的数据的对象(此处为 Python 字典)。第二个是写入序列化数据的文件。该 indent 参数是可选的。

在命令行中打印

该库的方法 tool() 允许 json 在命令行中漂亮地打印 JSON 文件。让 new_employee.json 我们在上一节中创建的文件上尝试一下。

第一步是打开命令行界面。然后我们需要将目录更改为文件 new_employee.json 保存的位置。

以下命令将以清晰的格式打印 JSON 文件:

python -m json.tool new_employee.json

下图显示了它在 Windows 命令提示符中的样子。

How to Convert a String to JSON in Python

了解有关 JSON 和 Python 的更多信息

我们已经介绍了如何在 Python 中读取和写入 JSON 文件。内置的 json 库使这两项操作变得容易。Python 的优势之一是丰富的内置和第三方库选择,可简化大多数任务。

如果您正在学习或计划学习 Python,我们的 “学习使用 Python 编程”课程是一个很好的开始。它专为初学者设计,包含 5 门互动课程。通过互动课程学习的优势在于您可以获得真实的动手实践编写代码的机会;这对于学习编程语言至关重要。

Python 中 JSON 文件 的完整课程 。该课程也是互动式的,包含 35 个练习。如果您想练习我们在本文中讨论的概念,那么本课程非常适合您。祝您学习愉快!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部