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

如何从Marshmallow标准类Schema生成Schema的字典表示?

实现Marshmallow Schema到指定字典格式的转换

当然可以实现这个需求,你可以通过遍历Schema的字段,提取每个字段的验证规则和必填属性来生成目标字典。以下是具体实现代码:

1. 定义原Schema类

from marshmallow import Schema, fields
from marshmallow.validate import Length

class ArtistSchema(Schema):
    name = fields.Str(validate=[Length(3)])
    age = fields.Int(required=True)

2. 编写转换函数

def schema_to_dict(schema_cls):
    schema_instance = schema_cls()
    result = {}
    for field_name, field_obj in schema_instance.fields.items():
        field_info = {}
        # 提取必填属性
        if field_obj.required:
            field_info["required"] = True
        # 提取Length验证规则的参数
        if field_obj.validate:
            for validator in field_obj.validate:
                if isinstance(validator, Length):
                    if validator.min is not None:
                        field_info["min_length"] = validator.min
                    if validator.max is not None:
                        field_info["max_length"] = validator.max
        if field_info:
            result[field_name] = field_info
    return result

3. 测试转换效果

schema_as_dict = schema_to_dict(ArtistSchema)
print(schema_as_dict)

执行后会输出你需要的字典格式:

{
    "name": {
        "min_length": 3
    },
    "age": {
        "required": True
    }
}

扩展说明

如果后续需要支持其他类型的验证器(比如Range、Regexp),只需在转换函数中新增对应验证器的类型判断和属性提取逻辑即可。

内容的提问来源于stack exchange,提问作者Artur Dwojak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:51:01