在 Python 中使用 JSON 数据

JSON(JavaScript 对象表示法)是一种轻量级数据格式,用于服务器和客户端之间的数据交换。它通常用于 Web 应用程序中发送和接收数据。Python 提供了一个名为 json 的内置模块,可轻松处理 JSON 数据。本文将指导您了解在 Python 中使用 JSON 数据的基础知识,包括读取、写入和操作 JSON 对象。

什么是 JSON?

JSON 是一种基于文本的格式,无论是人类还是机器都易于读写。它由键值对组成,类似于 Python 字典。典型的 JSON 对象如下所示:

{
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "is_student": false,
    "skills": ["Python", "JavaScript", "SQL"]
}

导入 JSON 模块

json 模块包含在 Python 的标准库中,因此您无需安装任何东西。只需在脚本开头导入它即可:

import json

读取 JSON 数据

您可以从字符串或文件中读取 JSON 数据。json.loads() 方法用于从字符串解析 JSON 数据,而 json.load() 用于从文件读取 JSON 数据。

从字符串读取 JSON

要从字符串读取 JSON,请使用 json.loads() 方法,它将 JSON 字符串转换为 Python 字典。

# Example of reading JSON from a string
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)

print(data)
print(data['name'])  # Output: Alice

从文件读取 JSON

要从文件读取 JSON 数据,请使用 json.load() 方法。此方法读取文件的内容并将其转换为 Python 字典。

# Example of reading JSON from a file
with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

写入 JSON 数据

您可以将 JSON 数据写入字符串或文件。json.dumps() 方法用于将 Python 对象转换为 JSON 字符串,而 json.dump() 用于将 JSON 数据写入文件。

将 JSON 写入字符串

要将 JSON 写入字符串,请使用 json.dumps() 方法,它将 Python 字典转换为 JSON 字符串。

# Example of writing JSON to a string
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

json_string = json.dumps(data)
print(json_string)

将 JSON 写入文件

要将 JSON 数据写入文件,请使用 json.dump() 方法。此方法接受 Python 对象并将其以 JSON 格式写入文件。

# Example of writing JSON to a file
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

with open('output.json', 'w') as file:
    json.dump(data, file)

漂亮地打印 JSON 数据

json.dumps() 方法有多个参数,可用于格式化 JSON 数据以提高可读性。indent 参数指定用于缩进的空格数,而 sort_keys 参数对输出中的键进行排序。

# Example of pretty-printing JSON data
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Chicago"
}

json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

JSON 和 Python 数据类型之间的转换

Python 的 json 模块可以处理不同的数据类型并在 JSON 和 Python 之间进行转换。以下是快速参考:

  • dict (Python) 到 object (JSON)
  • list (Python) 到 array (JSON)
  • str (Python) 到 string (JSON)
  • intfloat (Python) 到 number (JSON)
  • TrueFalse (Python) 至 truefalse (JSON)
  • None (Python) 到 null (JSON)

处理 JSON 错误

使用 JSON 时,可能会由于格式不正确或数据异常而出现错误。json 模块在遇到此类问题时会引发 JSONDecodeError 等异常。使用 tryexcept 块可妥善处理这些错误。

# Handling JSON errors
json_string = '{"name": "Alice", "age": 30, "city": "New York"'  # Missing closing brace

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"Error decoding JSON: {e}")

结论

处理 JSON 数据是 Python 开发人员的一项基本技能,尤其是在 Web 开发和数据科学领域。json 模块提供了易于使用的方法来读取、写入和操作 JSON 数据。通过掌握这些技术,您可以在 Python 应用程序中高效地处理 JSON 数据。