如何在Python中解析JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在Python中,我们可以使用内置的json模块来解析和处理JSON数据。 下面是一个使用python解析JSON的简单示例: “`python import json # 示例JSON字符串 json_str = ‘{“name”: “John”, “age”: 30, “city”: “New York”}’ # 使用json.loads()方法解析JSON字符串 data = json.loads(json_str) # 访问JSON数据的各个字段 name = data[“name”] age = data[“age”] city = data[“city”] # 打印结果 print(“Name:”, name) print(“Age:”, age) print(“City:”, city) “` 输出结果: “` Name: John Age: 30 City: New York “` 以上代码中,我们首先导入了json模块。然后,我们定义了一个示例的JSON字符串。接下来,我们使用json.loads()方法将JSON字符串解析为Python字典。之后,我们可以通过键来访问字典中的值。 在实际应用中,我们可以使用json.load()方法从文件中读取JSON数据,使用json.dump()方法将Python对象转换为JSON并写入文件中。 希望这个简单的示例能够帮助你了解如何在Python中解析JSON数据。

json 是一种流行的数据交换格式。python 内置了一个json 模块,用于解析和处理 json 数据。本教程将教你如何在 python 中处理 json。

通过本教程,你将学到:

  • json 的基础知识,
  • 如何在 python 中解析和创建 json 字符串,以及
  • 如何在 python 中读取和写入 json 文件。

让我们开始吧!⏳

什么是 json?

json 代表javascript object notation,它是一种文本格式的数据交换方式。尽管 json 最初受到 javascript 对象的启发,但几乎所有编程语言都支持使用 json 进行工作。

如果你曾经使用过 api 或阅读过配置文件,你可能会遇到 json。

📑 在查询 api 时,你会通过 json 发送和接收数据。此外,在软件应用的客户端和服务器之间的通信中,json 也被广泛使用。此外,你还可以将 json 用于通用数据存储。

json 的格式非常类似于 python 字典的格式。字典是 python 内置的强大数据结构,它以键值对的形式存储数据。

在我们继续之前,有几个值得注意的点:

  • 在 python 中,json 对象存储为字典。
  • json 中的数组存储为 python 列表。
  • 在 json 中,布尔值表示为 truefalse。在 python 中,它们转换为布尔值 truefalse

有关从 json 转换为 python 的数据类型的更多详细信息,请阅读此处的文档 here

由于 json 模块是 python 标准库的一部分,所以你不需要安装它。你可以像这样导入到当前目录:

import json

如何在 python 中加载 json 字符串

在 python 中加载 json 字符串的一般语法如下:

 = json.loads()

这里,

  • 是你要加载 json 字符串的 python 字典,
  • 是任何有效的 json 字符串。

这将把 加载到 python 字典 中。

让我们来编写一个例子。这里的 json_str 是一个 json 字符串。

json_str = '''
{
    "books": [
        {
            "title": "the wind in the willows",
            "author": "kenneth grahame",
            "year": "1908"
        },
        {
            "title": "to the lighthouse",
            "author": "virginia woolf",
            "year": "1927"
        }
    ]
}
'''

以下代码片段显示了如何使用loads()方法将json字符串json_str加载到python字典中。您可以使用内置的type()函数来验证py_dict是一个python字典。

py_dict = json.loads(json_str)

type(py_dict)

# 输出: dict

print(py_dict)

# 输出
{'books': [{'title': 'the wind in the willows', 
'author': 'kenneth grahame', 'year': '1908'}, 
{'title': 'to the lighthouse', 'author': 'virginia woolf', 'year': '1927'}]}

如上所示,代码中的所有字段都是py_dict中的键值对。

如何在python中创建json字符串

假设您有一个python字典。那么,如何从中创建json字符串呢?

您可以使用以下语法使用dumps()方法来实现:

 = json.dumps()

在这里,

  • 是您想从中创建json字符串的python字典,
  • 是结果json字符串。

因此,dumps()方法将转储为json字符串

对于我们现有的python字典py_dict。让我们添加一个新键"movies"。您可以按照以下代码片段中所示进行操作:

py_dict["movies"] = [{"title":"the imitation game","year":"2014",
"lang":"en","watched":true}]

现在,让我们使用dumps()方法将修改后的字典转储为新的json字符串json_str2

json_str2 = json.dumps(py_dict)

print(json_str2)

# 输出
{"books": [{"title": "the wind in the willows", "author": "kenneth grahame", "year": "1908"}, 
{"title": "to the lighthouse", "author": "virginia woolf", "year": "1927"}], 
"movies": [{"title": "the imitation game", "year": "2014", "lang": "en", "watched": true}]}

如您在上面的示例中所见,输出的json字符串在没有适当格式的情况下很难阅读。您可以使用可选参数indent添加缩进。

您可以将indent设置为2这样的整数,如下所示:

json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# 输出
{
  "books": [
    {
      "title": "the wind in the willows",
      "author": "kenneth grahame",
      "year": "1908"
    },
    {
      "title": "to the lighthouse",
      "author": "virginia woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "the imitation game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

请注意,输出已经使用缩进进行了格式化,易于阅读。

注意:💡 如果您希望按字母顺序对键进行排序,可以将sort_keys参数设置为true

如下代码片段所示,键现在已按字母顺序排序。

json_str2 = json.dumps(py_dict, indent = 2, sort_keys=true)
print(json_str2)

# 输出
{
  "books": [
    {
      "author": "kenneth grahame",
      "title": "the wind in the willows",
      "year": "1908"
    },
    {
      "author": "virginia woolf",
      "title": "to the lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "the imitation game",
      "watched": true,
      "year": "2014"
    }
  ]

现在的键以字母顺序出现: "author""title""year"

到目前为止,您已经学会了如何在python中处理json字符串。在下一节中,您将学习如何处理json文件。

如何在python中读取json文件

要在python中读取json文件,请使用以下语法:

json.load() 

# 这里的  是任何有效的json文件。

请注意,我们使用的是load()方法而不是loads()方法。 loads()加载一个json字符串,而load()加载一个json文件

当在python中处理文件时,应考虑使用上下文管理器。您也可以尝试以下方法来读取文件,而不使用上下文管理器:

my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

如果不关闭文件,可能会造成资源的浪费。

然而,当使用上下文管理器时,文件在文件操作完成后会自动关闭。

您可以使用上下文管理器来读取文件,如下所示:

with open('students.json','r') as file:   
   data = json.load(file) 
   print(data) 

# 输出 

{'students': [{'roll_num': 'cs27', 'name': 'anna', 'course': 'cs'}, 
{'roll_num': 'ep30', 'name': 'kate', 'course': 'phy'}]}

由于您正在从文件中读取,所以上述代码中指定模式为read——以'r'表示。

注意:为了方便地浏览当前目录,请确保json文件与main.py位于同一文件夹中,如下图所示。如果您的json文件位于不同的文件夹中,请确保指定文件的路径。

在python中读取json文件。

在下一节中,您将学习如何写入json文件。✍

如何在python中写入json文件

要写入现有的json文件或创建新的json文件,请使用dump()方法:

json.dump(,)

# where  is a python dictionary 

# and  is the json file 

所以上述的语法将字典转储到json文件中。

在前一节中,我们有字典 py_dict 。现在让我们将其转储到一个新的json文件中。并将其命名为 new_file.json

以下代码单元显示了如何使用 dump()函数:

with open('new_file.json','w') as file:
  json.dump(py_dict,file)

注意:以写入模式(w)打开文件会覆盖已存在的文件内容。如果文件不存在,将创建该文件。

执行上述代码单元后,您将看到在当前工作目录中创建了一个新的json文件。您可以继续查看json文件的内容。

在python中创建json文件

在写入文件时,关键目标是数据存储。如果您希望保留格式,还可以使用 indent sort_keys 参数。

结论

⏲是时候进行快速总结了。

在本教程中,您已经学会了:

  • 使用json的基础知识
  • 如何使用loads()load()方法分别读取json字符串和json文件
  • 如何使用dumps()dump()方法将python字典转储到json字符串和json文件中

希望您觉得本教程有帮助。愉快学习!

您还可以查看json工具以解析、格式化和验证

类似文章