在 Python 中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于表示结构化数据。它易于人类阅读和编写,同时也易于机器解析和生成。Python 提供了内置的 json 模块,用于处理 JSON 数据的解析和生成。

目录

  1. JSON 基本介绍
  2. JSON 和 Python 数据类型的映射
  3. 加载 JSON 数据
  4. 转换 Python 对象为 JSON 字符串
  5. 读取和写入 JSON 文件
  6. JSON 格式化输出
  7. 处理 JSON 错误
  8. 参考资料

1. JSON 基本介绍

JSON 是一种轻量级的数据交换格式,广泛应用于网络通信中。JSON 格式的数据可以由键值对组成,其中键通常是字符串类型,值可以是字符串、数字、布尔值、数组、对象等。

一个 JSON 数据的例子:

{
    "name": "Alice",
    "age": 25,
    "is_student": false,
    "courses": ["Math", "Science"]
}


2. JSON 和 Python 数据类型的映射

在 Python 中,json 模块允许我们将 JSON 数据与 Python 数据类型之间进行相互转换。以下是常见的映射规则:

JSON 类型Python 类型
JSON 对象(键值对)Python 字典(dict)
JSON 数组Python 列表(list)
JSON 字符串Python 字符串(str)
JSON 数字Python 整数或浮点数(int/float)
JSON 布尔值Python 布尔值(bool)
JSON nullPython None

3. 加载 JSON 数据

使用 json 模块中的 loads() 方法可以将 JSON 字符串转换为 Python 对象。loads() 代表 “load string”(加载字符串)。

import json

# JSON 字符串
json_str = '{"name": "Alice", "age": 25, "is_student": false}'

# 将 JSON 字符串转换为 Python 字典
python_obj = json.loads(json_str)

print(python_obj)
# 输出: {'name': 'Alice', 'age': 25, 'is_student': False}


4. 转换 Python 对象为 JSON 字符串

使用 json.dumps() 方法可以将 Python 对象转换为 JSON 字符串。dumps() 代表 “dump string”(转储字符串)。

import json

# Python 字典
python_obj = {"name": "Alice", "age": 25, "is_student": False}

# 将 Python 对象转换为 JSON 字符串
json_str = json.dumps(python_obj)

print(json_str)
# 输出: {"name": "Alice", "age": 25, "is_student": false}


5. 读取和写入 JSON 文件

Python 提供了 json.load()json.dump() 方法,分别用于读取和写入 JSON 文件。

读取 JSON 文件

import json

# 假设我们有一个 JSON 文件 'data.json'
with open('data.json', 'r') as file:
    python_obj = json.load(file)

print(python_obj)

写入 JSON 文件

import json

# Python 对象
python_obj = {"name": "Alice", "age": 25, "is_student": False}

# 将 Python 对象写入到 'data.json' 文件中
with open('data.json', 'w') as file:
    json.dump(python_obj, file)


6. JSON 格式化输出

使用 json.dumps() 时,可以通过 indent 参数来格式化输出,使其更易读。例如,可以设置缩进层级来美化输出。

import json

python_obj = {"name": "Alice", "age": 25, "is_student": False}

# 格式化输出
json_str = json.dumps(python_obj, indent=4)
print(json_str)

# 输出:
# {
#     "name": "Alice",
#     "age": 25,
#     "is_student": false
# }


7. 处理 JSON 错误

在加载 JSON 数据时,如果格式不正确,json 模块会引发 json.JSONDecodeError 异常。可以使用 try...except 来捕获和处理错误。

import json

invalid_json_str = '{"name": "Alice", "age": 25,}'  # 错误的 JSON

try:
    python_obj = json.loads(invalid_json_str)
except json.JSONDecodeError as e:
    print("JSON Decode Error:", e)


8. 参考资料

出站链接

站内链接


以上是 Python 中常见的 json 模块的使用方法,涵盖了从加载、转换、格式化到处理 JSON 错误的基本操作。这些工具对于处理 Web 应用、API 响应以及跨语言的数据交换非常有用。