参考资料

  1. python在线编辑器
  2. python怎么读取pdf文件
  3. Python代码格式化工具有哪些
  4. Python: json模块

Python json 模块简介

  • 功能: 用于JSON数据的编码(序列化)与解码(反序列化)。

  • 核心用途: 处理Python对象与JSON格式字符串之间的转换。


主要方法及参数说明

1. json.dumps()(序列化)

  • 功能: 将Python对象转为JSON字符串。

  • 参数:

    • obj: 要序列化的对象(如字典、列表)。

    • indent: 缩进空格数(美化输出,如indent=4)。

    • sort_keys: 是否按键排序(True/False)。

    • ensure_ascii: 非ASCII字符是否转义(默认True,设为False可保留中文)。

    • default: 指定自定义对象的序列化函数。

2. json.loads()(反序列化)

  • 功能: 将JSON字符串转为Python对象。

  • 参数:

    • s: JSON格式字符串。

    • object_hook: 自定义字典的解码函数(如转为自定义类)。

3. json.dump()json.load()

  • 功能: 与dumps/loads类似,但直接操作文件对象。

  • 参数:

    • 需传入文件对象(如open('file.json', 'w'))。


使用方法

序列化示例

import json

data = {"name": "Alice", "age": 25, "hobbies": ["reading", "hiking"]}
json_str = json.dumps(data, indent=4, ensure_ascii=False)
print(json_str)

输出:

{
    "name": "Alice",
    "age": 25,
    "hobbies": ["reading", "hiking"]
}

反序列化示例

json_str = '{"name": "Bob", "score": 90}'
python_dict = json.loads(json_str)
print(python_dict["name"])  # 输出: Bob

文件操作示例

# 写入JSON文件
with open('data.json', 'w') as f:
    json.dump(data, f)

# 读取JSON文件
with open('data.json', 'r') as f:
    loaded_data = json.load(f)

案例解析:自定义对象序列化

需求: 序列化一个自定义类Person的实例。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 自定义序列化函数
def person_to_dict(p):
    return {"name": p.name, "age": p.age}

person = Person("Charlie", 30)
json_str = json.dumps(person, default=person_to_dict)
print(json_str)  # 输出: {"name": "Charlie", "age": 30}

反序列化为对象:

def dict_to_person(d):
    return Person(d["name"], d["age"])

python_obj = json.loads(json_str, object_hook=dict_to_person)
print(python_obj.name)  # 输出: Charlie

注意事项

  1. JSON仅支持基本数据类型(字符串、数字、列表、字典、布尔值、None)。

  2. 自定义对象需通过default参数或继承JSONEncoder类处理。

  3. 文件操作时注意编码(推荐open使用encoding='utf-8')。