原文: Loading a JSON File in Python – How to Read and Parse JSON
在本文中,你将学习如何在 Python 中读取和解析 JSON。
什么是 JSON
JSON 是 JavaScript Object Notation 的缩写。这是一种以名称-值对的形式存储数据的简单语法。值可以是各种有效的数据类型。 JSON 不可接受的类型包括函数、日期和 undefined
。
JSON 文件以具有有效 JSON 结构的 .json
扩展名存储。
以下是 JSON 文件的结构:
{
"name": "John",
"age": 50,
"is_married": false,
"profession": null,
"hobbies": ["traveling", "photography"]
}
你将经常使用 JSON 在 Web 应用程序中从服务器发送和接收数据。
收到数据后,程序读取并解析 JSON 以提取特定数据。不同的语言有不同的方法来做到这一点。我们将在此处了解如何在 Python 中执行这些操作。
如何读取 JSON 文件
假设上面代码块中的 JSON 存储在 user.json
文件中。使用 Python 中的 open()
内置函数,我们可以读取该文件并将内容分配给一个变量,就是这样:
with open('user.json') as user_file:
file_contents = user_file.read()
print(file_contents)
# {
# "name": "John",
# "age": 50,
# "is_married": false,
# "profession": null,
# "hobbies": ["travelling", "photography"]
# }
你将文件路径传递给 open
方法,该方法打开文件并将文件中的流数据分配给 user_file
变量。使用 read
方法,你可以将文件的文本内容传递给 file_contents
变量。
我在表达式的开头使用了 with
,以便在读取文件内容后,Python 可以关闭文件。
file_contents
现在包含 JSON 的字符串版本。下一步,你可以解析 JSON 了。
如何解析 JSON
Python 具有用于各种操作的内置模块。为了管理 JSON 文件,Python 有 json
模块。
该模块带有许多方法。其中之一是用于解析 JSON 字符串的 load()
方法。然后,你可以将解析后的数据分配给如下变量:
import json
with open('user.json') as user_file:
file_contents = user_file.read()
print(file_contents)
parsed_json = json.loads(file_contents)
# {
# 'name': 'John',
# 'age': 50,
# 'is_married': False,
# 'profession': None,
# 'hobbies': ['travelling', 'photography']
# }
使用 load()
方法,你可以看到 parsed_json
变量现在有一个有效的字典。从此字典中,你可以访问其中的键和值。
另请注意 JSON 中的 null
如何在 Python 中转换为 None
。这是因为 null
在 Python 中无效。
如何使用 json.load() 读取和解析 JSON 文件
json
模块还具有 load
方法,你可以使用它来读取文件对象并同时对其进行解析。使用此方法,你可以将之前的代码更新为:
import json
with open('user.json') as user_file:
parsed_json = json.load(user_file)
print(parsed_json)
# {
# 'name': 'John',
# 'age': 50,
# 'is_married': False,
# 'profession': None,
# 'hobbies': ['travelling', 'photography']
# }
不使用文件对象的 read
方法和 json
模块的 loads
方法,你可以直接使用读取和解析文件对象的 load
方法。
小结
JSON 数据以其简单的结构而闻名,并且在服务器和客户端之间的信息交换中很受欢迎(在大多数情况下是一种标准)。
不同的语言和技术可以以不同的方式读取和解析 JSON 文件。在本文中,我们学习了如何读取 JSON 文件并使用文件对象的 read
方法以及 json
模块的 load
方法解析此类文件。