本教程展示了如何使用 json 库在 Python 中使用 JavaScript 对象表示法 (JSON)。
译自How to Use JSON In Your Python Code,作者 Jack Wallen。
如果您熟悉容器, 您可能也熟悉JSON. 如果您不熟悉,JSON 非常容易理解。JSON 代表JavaScript 对象表示法, 它是一种用于存储和交换数据的语法。JSON 特别适用于从服务器发送到网页的数据。
JSON 的基本结构是名称/值对,用逗号分隔,对象用大括号括起来,数组用方括号括起来。它看起来像这样:
{
"students":[
{"firstName":"Olivia", "lastName":"Nightingale", "year":"senior"},
{"firstName":"Anton", "lastName":"Frank", "year":"sophomore"},
{"firstName":"Jean", "lastName":"Barber", "year":"freshman"}
]
}
分解如下:
“firstName”:”Olivia” 是一个键/值对
{“firstName”:”Olivia”, “lastName”:”Nightingale”, “year”:”senior”}是一个对象
*“students”: 是一个数组。
但是如何在我们的Python代码中使用 JSON 呢?幸运的是,有一个库可以实现这一点。该库是json, 可以使用以下代码导入:
很简单。
要在Python中使用 JSON,您需要了解如何将 JSON 转换为 Python 以及将 Python 转换为 JSON。让我们首先看看这两个操作是如何完成的。
让我们获取一个 JSON 字符串并在一个简单的 Python 代码块中进行转换。为此,我们必须使用json.loads()函数。在我们的import json行之后,我们将使用一些 JSON 键/值对定义 x,如下所示:
x = '{ "firstName":"Olivia", "lastName":"Nightingale", "year":"senior"}'
请注意,我们必须将对象用单引号括起来。如果我们不这样做,Python 会报告错误。
接下来,我们使用 json.loads() 函数解析 JSON 对象(作为“y”),如下所示:
最后,我们使用以下代码打印出对象中的一个元素:
整个代码如下所示:
import json
x = '{ "firstName":"Olivia", "lastName":"Nightingale", "year":"senior"}'
y = json.loads(x)
print(y["year"])
上面代码块的输出将是:
senior
将 Python 转换为 JSON
我们也可以通过将 Python 对象转换为 JSON 字符串来执行相反的操作。这次,我们使用json.dumps()
函数。
让我们使用与上面类似的示例。我们将使用 Python 字典 (dict) 定义 x,如下所示:
x = {
"name": "Olivia Nightingale",
"age": "17",
"year": "senior"
}
然后我们使用json.dumps()
函数定义“y”,如下所示:
让我们使用以下代码打印结果:
整个代码块如下所示:
import json
x = {
"name": "Olivia Nightingale",
"age": "17",
"year": "senior"
}
y = json.dumps(x)
print(y)
上面代码的输出将以 JSON 对象的形式出现,如下所示:
{“name”: “Olivia Nightingale”, “age”: “17”, “year”: “senior”}
使用 json 库,您可以将以下对象转换为其 JSON 等效项:
dic
list
tuple
str
int
float
True
False
None
重要的是要了解 JSON 值仅限于以下内容:
object – 键值对的集合
array – 方括号中包含的值列表
string – 用双引号括起来的文本
number – 整数或浮点数
boolean – true 或 false
null – 空值
让我演示如何使用单个代码块将上述每个对象转换为其 JSON 等效项:
import json
x = {
"name": "Olivia",
"age": "20",
"graduated": False,
"married": False,
"majors": ("Theatre", "Communications")
"minors": None,
"vehicles": [
{"type": "bicycle", "color": "pink"},
{"type": "car", "make": "Mini Cooper"}
]
}
print(json.dumps(x))
上面代码的输出将是:
{“name”: “Olivia”, “age”: “20”, “graduated”: false, “married”: false, “majors”: [“Theatre”, “Communications”], “minors”: null, “vehicles”: [{“type”: “bicycle”, “color”: “pink”}, {“type”: “car”, “make”: “Mini Cooper”}]}
这看起来很丑。让我们进行一些格式化。使用json.dumps(), 您可以定义缩进和分隔符。让我们缩进 5 个空格,并使用 . 和 = 分隔符,这在print行中完成,如下所示:
print(json.dumps(x, indent=5, separators=(". ", " = ")))
现在输出看起来像这样:
{
“name” = “Olivia”.
“age” = “20”.
“graduated” = false.
“married” = false.
“majors” = [
“Theatre”.
“Communications”
].
“minors” = null.
“vehicles” = [
{
“type” = “bicycle”.
“color” = “pink”
}.
{
“type” = “car”.
“make” = “Mini Cooper”
}
]
}
这样好多了。
我们还可以使用json.dumps()函数和sort_keys参数对结果进行排序。这一行代码如下所示:
print(json.dumps(x, indent=5, separators=(". ", " = "), sort_keys=True))
现在我们的输出如下所示:
{
“age” = “20”.
“graduated” = false.
“majors” = [
“Theatre”.
“Communications”
].
“married” = false.
“minors” = null.
“name” = “Olivia”.
“vehicles” = [
{
“color” = “pink”.
“type” = “bicycle”
}.
{
“make” = “Mini Cooper”.
“type” = “car”
}
]
}
我们还可以从Python 代码中写入 JSON 文件,这非常方便(尤其是在需要将数据从 Python 应用程序传递到需要 JSON 格式的 Web 应用程序时)。让我们使用上面的示例并将数据写入文件“students.json”。代码如下所示:
import json
x = {
"name": "Olivia",
"age": "20",
"graduated": False,
"married": False,
"majors": ("Theatre", "Communications")
"minors": None,
"vehicles": [
{"type": "bicycle", "color": "pink"},
{"type": "car", "make": "Mini Cooper"}
]
}
with open("students.json", mode="w", encoding="utf-8") as write_file: json.dump(x, write_file)
上面的代码不会在终端打印任何输出,而是将输出写入文件“students.json”。打开文件查看,您将看到数据以 JSON 格式显示。
这就是我的 Python 学习朋友们:如何在 Python 代码中轻松使用 JSON 或将数据从 Python 转换为 JSON。当您深入 Python 的兔子洞时,此功能将非常有用。