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

Marshmallow Schema序列化时如何忽略None值?

解决Marshmallow序列化时排除None值字段的问题

有两种常用方式可以实现当uc字段值为None时不输出到JSON中:

方法一:全局跳过所有None值字段

在实例化Schema时传入skip_none=True参数,Marshmallow会自动过滤掉所有值为None的字段:

# 实例化Schema时开启skip_none
schema_instance = YourSchema(skip_none=True)
json = schema_instance.dumps(my_class)

这种方式适合你希望所有可选字段为None时都被排除的场景。

方法二:针对单个/指定字段过滤(或自定义过滤逻辑)

如果只想针对uc字段处理,或者需要更灵活的过滤规则,可以用post_dump钩子在序列化后手动移除指定的null值:

from marshmallow import Schema, fields, post_dump

class YourSchema(Schema):
    uc = fields.Integer(data_key='uc', description='the description', allow_none=True)

    @post_dump
    def filter_none_fields(self, data, **kwargs):
        # 只移除uc字段的null值
        if data.get('uc') is None:
            del data['uc']
        return data
        # 如果要移除所有null值,用下面的代码:
        # return {k: v for k, v in data.items() if v is not None}

这种方式可以精准控制哪些字段需要过滤,或者实现更复杂的过滤逻辑。

注意:如果你的字段定义中没有allow_none=True,当uc为None时Marshmallow会抛出验证错误,所以需要确保字段允许None值(即加上allow_none=True),否则上述方法无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:37:04