在Python代码中使用JSON的方法

文摘   科技   2024-09-17 00:00   山东  

本教程展示了如何使用 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 的兔子洞时,此功能将非常有用。

     

云云众生s
云原生践行者
 最新文章