首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用冒号捕获空列表

用冒号捕获空列表
EN

Stack Overflow用户
提问于 2013-09-05 09:25:59
回答 1查看 1.5K关注 0票数 6

我使用colander来验证(并反序列化json数据)某些web服务的输入。

我想在冒号模式中添加一个规则来捕获一个空列表,但是我不知道如何去做。

现在我有了下面的示例,演示用两组不同的数据调用函数f()。因为空的colander.Invalid列表,我希望后者触发events异常

代码语言:javascript
复制
import colander

def f(data):
    class EventList(colander.SequenceSchema):
        list_item = colander.SchemaNode(colander.Int())

    class Schema(colander.MappingSchema):
        txt    = colander.SchemaNode(colander.String())
        user   = colander.SchemaNode(colander.String())
        events = EventList()

    try:
        good_data = Schema().deserialize(data)
        print 'looks good'
    except colander.Invalid as e:
        print "man, your data suck"


good_data = {'txt' : 'BINGO',
             'user' : 'mogul',
             'events' : [11, 22, 33]}
f(good_data)

bad_data = {'txt' : 'BOOM',
            'user' : 'mogul',
            'events' : []}
f(bad_data)

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-13 03:06:06

您试过使用colander.Length验证器吗?

尝试使用以下方法修改架构:

代码语言:javascript
复制
events = EventList(validator=colander.Length(min=1))

对于bad_data,这应该会引发:

代码语言:javascript
复制
Invalid: {'events': u'Shorter than minimum length 1'}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18632562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档