如何在Python中处理JSON文件(详细示例介绍)

Python如何处理JSON文件?本文带你了解如何使用内置的 json 模块在 Python 中保存(序列化)和加载(反序列化)JSON 文件。
JSON(JavaScript Object Notation)是一种轻量级的开放标准数据交换文件格式,它使用人类可读的文本来传输数据。
尽管你可能会从名称中得出结论,它是一种 Javascript 数据格式。嗯,不完全是,JSON 是一种完全独立于语言的文本格式,并使用大多数流行的编程语言(如 Python)所熟悉的约定。
如何在Python中处理JSON文件?在本教程中,你将使用 Python 执行以下操作:

  • 保存 JSON 数据
  • 加载 JSON 数据
幸运的是,Python 有一个内置模块json,这对我们的工作来说已经足够了,让我们开始吧!
Python处理JSON文件示例:保存 JSON 数据Python 字典与 JSON 格式非常相似,事实上,你可以用很少的代码行保存一个字典:
import json# example dictionary to save as JSON data = https://www.lsbin.com/{"first_name": "John", "last_name": "Doe", "email": "john@doe.com", "salary": 1499.9, # just to demonstrate we can use floats as well "age": 17, "is_real": False, # also booleans! "titles": [ "The Unknown", "Anonymous"] # also lists! }# save JSON file # 1st option with open("data1.json", "w") as f: json.dump(data, f)

Python如何处理JSON文件?执行上述代码后,你会注意到data1.json文件出现在你的工作目录中。我们以写入模式打开文件,并使用该json.dump()函数将 Python 字典作为 JSON 格式的流序列化到打开的文件中。
生成的文件将如下所示:
{ "first_name": "John", "last_name": "Doe", "email": "john@doe.com", "salary": 1499.9, "age": 17, "is_real": false, "titles": [ "The Unknown", "Anonymous" ] }

这是另存为 JSON 的一种方式,你也可以使用json.dumps()函数:
# 2nd option with open("data2.json", "w") as f: f.write(json.dumps(data, indent=4))

json.dumps()函数将字典作为 JSON 解析字符串返回,你可能希望此字符串用于其他用途,我们只是将其保存到文件中只是为了让你知道它确实存在。
注意我indent=4这次添加了一个参数作为json.dumps()函数,这将漂亮地打印 JSON 数组元素和对象成员,如果你使用indent=0,它只会打印新行,如果它是None(默认),那么它会被转储到一行中(不是人类可读的)。?他indent  的关键字中都存在dump()dumps()功能。
处理非 ASCII 字符
Python处理JSON文件示例:如果你的数据包含非 ASCII 字符,并且你不希望 JSON 文件中包含 Unicode 实例(例如\u0623),那么你应该传递ensure_ascii=Falsejson.dump()函数:
unicode_data = https://www.lsbin.com/{"first_name": "????", "last_name": "???" }with open("data_unicode.json", "w", encoding="utf-8") as f: json.dump(unicode_data, f, ensure_ascii=False)

【如何在Python中处理JSON文件(详细示例介绍)】结果文件:
{"first_name": "????", "last_name": "???"}

加载 JSON 数据Python如何处理JSON文件?反序列化 JSON 文件并将它们加载到 Python 中非常简单,以下代码加载之前保存的 JSON 文件:
# read a JSON file # 1st option file_name = "data1.json" with open(file_name) as f: data = https://www.lsbin.com/json.load(f)print(data)

json.load()函数将自动返回一个 Python 字典,这简化了我们处理 JSON 文件的工作,输出如下:
{'first_name': 'John', 'last_name': 'Doe', 'email': 'john@doe.com', 'salary': 1499.9, 'age': 17, 'is_real': False, 'titles': [ 'The Unknown', 'Anonymous']}

同样,你也可以使用json.loads()函数来读取字符串:
# 2nd option file_name = "data2.json" with open(file_name) as f: data = https://www.lsbin.com/json.loads(f.read())print(data)

所以我们首先使用read()方法读取文件内容,然后将其传递给json.loads()函数来解析它。
简单的真实示例如何在Python中处理JSON文件?在本节中,我们将使用 API 请求到远程 Web 服务器,并将结果数据保存到 JSON 文件中,这是完整的Python处理JSON文件示例代码:
import requests import json# make API request and parse JSON automatically data = https://www.lsbin.com/requests.get("https://jsonplaceholder.typicode.com/users").json() # save all data in a single JSON file file_name = "user_data.json" with open(file_name, "w") as f: json.dump(data, f, indent=4) print(file_name, "saved successfully!")# or you can save each entry into a file for user in data: # iterate over `data` list file_name = f"user_{user[ 'id']}.json" with open(file_name, "w") as f: json.dump(user, f, indent=4) print(file_name, "saved successfully!")# load 2nd user for instance file_name = "user_2.json" with open(file_name) as f: user_data = https://www.lsbin.com/json.load(f)print(user_data) print("Username:", user_data[ "username"])

注意:要运行上述代码,你需要通过以下方式安装请求库:pip install requests
结论Python如何处理JSON文件?现在你知道如何使用dump()dumps()load()loads()功能的JSON模块,你必须使用Python JSON数据的工作能力。
作为开发人员,你可能必须经常与它进行交互,你会多次遇到 JSON,尤其是在使用我们在示例中显示的REST API时,或者当你从 Web 抓取数据时。
本教程中的每个代码都包含在完整的代码页中,请查看!

    推荐阅读