You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何将JSON反序列化为指定自定义类的对象结构

Python 3 将JSON反序列化为指定自定义对象的实现方法

JSON默认的json.load方法只会将JSON结构转换为字典、列表、基础值类型,不会自动映射到你定义的自定义类实例,你可以通过以下两种方案实现指定类型的反序列化:

方案1:原生Python实现(无第三方依赖)

你可以手动处理嵌套结构的类型转换,配合Python 3.7+内置的dataclass可以省去手写构造函数的冗余代码:

import json
from dataclasses import dataclass

# 先调整自定义类,添加构造逻辑
@dataclass
class B:
    # 注意示例JSON中field1为字符串类型,和你原注解的int不匹配,需调整
    field1: str
    field2: str

@dataclass
class C:
    field1: str
    field2: str

@dataclass
class A:
    name: str
    some_object: B
    some_list_of_objects: list[C]

    @classmethod
    def load_from_json(cls, file_path: str):
        # 先加载JSON为基础结构
        with open(file_path, "r", encoding="utf-8") as f:
            raw_data = json.load(f)
        # 手动转换嵌套结构为对应类实例
        b_instance = B(**raw_data["some_object"])
        c_instance_list = [C(**item) for item in raw_data["some_list_of_objects"]]
        # 构造并返回A类实例
        return cls(
            name=raw_data["name"],
            some_object=b_instance,
            some_list_of_objects=c_instance_list
        )

# 调用示例
a_instance = A.load_from_json("你的JSON文件路径.json")
# 验证类型
print(type(a_instance.some_object)) # 输出 <class '__main__.B'>
print(type(a_instance.some_list_of_objects[0])) # 输出 <class '__main__.C'>

注意:如果你的实际JSON字段值和类注解类型不匹配,转换会报错,请提前对齐类型定义。

方案2:使用Pydantic自动反序列化(推荐复杂场景使用)

如果你的JSON结构嵌套层级多、字段复杂,可以用Pydantic库自动完成类型映射和校验,省去手动写转换逻辑的成本:

  1. 先安装依赖:
    pip install pydantic
  2. 代码实现:
import json
from pydantic import BaseModel

class B(BaseModel):
    field1: str
    field2: str

class C(BaseModel):
    field1: str
    field2: str

class A(BaseModel):
    name: str
    some_object: B
    some_list_of_objects: list[C]

# 方式1:先加载JSON再构造实例
with open("你的JSON文件路径.json", "r", encoding="utf-8") as f:
    raw_data = json.load(f)
a_instance = A(**raw_data)

# 方式2:直接调用parse_file方法一步完成
a_instance = A.parse_file("你的JSON文件路径.json")

Pydantic会自动根据你定义的类型注解完成嵌套结构的类型转换,同时自带类型校验,出现类型不匹配时会抛出清晰的错误提示。

内容的提问来源于stack exchange,提问作者Z .

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:24:03