python json详解

发布于:2025-02-19 ⋅ 阅读:(19) ⋅ 点赞:(0)

json 是 Python 中用于处理 JSON 数据的标准库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。Python 的 json 模块提供了将 Python 对象与 JSON 数据相互转换的功能。

1. 基本功能

json 模块提供了四个主要的函数:

  • json.dump()
  • json.dumps()
  • json.load()
  • json.loads()

1.1 json.dump()

json.dump() 用于将 Python 对象序列化为 JSON 格式,并写入文件。

import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}

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

1.2 json.dumps()

json.dumps() 用于将 Python 对象序列化为 JSON 格式的字符串。

import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}

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

1.3 json.load()

json.load() 用于从文件中读取 JSON 数据,并将其反序列化为 Python 对象。

import json

with open('data.json', 'r') as file:
    data = json.load(file)
    print(data)

 1.4 json.loads()

json.loads() 用于将 JSON 格式的字符串反序列化为 Python 对象。

import json

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string)
print(data)

2. 参数详解

2.1 json.dump() 和 json.dumps()

  • obj: 要序列化的 Python 对象。
  • fp: 文件对象(仅适用于 json.dump())。
  • skipkeys: 如果为 True,则跳过无法序列化的键。
  • ensure_ascii: 如果为 False,则输出包含非 ASCII 字符。
  • check_circular: 如果为 False,则禁用循环引用检查。
  • allow_nan: 如果为 False,则禁止 NaN、Infinity 和 -Infinity。
  • cls: 自定义 JSON 编码器类。
  • indent: 缩进级别,用于格式化输出。
  • separators: 用于分隔 JSON 对象的项和键值对的字符串。
  • default: 自定义序列化函数。
  • sort_keys: 如果为 True,则按键排序输出。

示例:

import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}

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

2.2 json.load() 和 json.loads()

  • fp: 文件对象(仅适用于 json.load())。
  • s: JSON 字符串(仅适用于 json.loads())。
  • cls: 自定义 JSON 解码器类。
  • object_hook: 自定义对象钩子函数。
  • parse_float: 自定义浮点数解析函数。
  • parse_int: 自定义整数解析函数。
  • parse_constant: 自定义常量解析函数。
  • object_pairs_hook: 自定义对象对钩子函数。

示例:

import json

json_string = '{"name": "Alice", "age": 30, "is_student": false}'

def custom_decoder(dct):
    if 'age' in dct:
        dct['age'] = str(dct['age']) + " years old"
    return dct

data = json.loads(json_string, object_hook=custom_decoder)
print(data)

3. 错误处理

在处理 JSON 数据时,可能会遇到一些常见的错误,例如文件不存在或 JSON 格式不正确。可以使用 try-except 块来处理这些错误:

import json

try:
    with open('data.json', 'r') as file:
        data = json.load(file)
        print(data)
except FileNotFoundError:
    print("文件未找到")
except json.JSONDecodeError:
    print("JSON 格式错误")

4. 总结

Python 的 json 模块提供了强大的功能来处理 JSON 数据。通过 json.dump() 和 json.dumps(),你可以将 Python 对象序列化为 JSON 格式;通过 json.load() 和 json.loads(),你可以将 JSON 数据反序列化为 Python 对象。利用这些功能,你可以轻松地在 Python 程序中处理 JSON 数据。


网站公告

今日签到

点亮在社区的每一天
去签到