如何在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 中,布尔值表示为
true
和false
。在 python 中,它们转换为布尔值true
和false
。
有关从 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文件位于不同的文件夹中,请确保指定文件的路径。在下一节中,您将学习如何写入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文件的内容。
在写入文件时,关键目标是数据存储。如果您希望保留格式,还可以使用
indent
和sort_keys
参数。结论
⏲是时候进行快速总结了。
在本教程中,您已经学会了:
- 使用json的基础知识
- 如何使用
loads()
和load()
方法分别读取json字符串和json文件- 如何使用
dumps()
和dump()
方法将python字典转储到json字符串和json文件中希望您觉得本教程有帮助。愉快学习!
您还可以查看json工具以解析、格式化和验证。