如何从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
相关产品推荐
相关产品推荐

