我colander
用来验证(和反序列化 json 数据)对某些 Web 服务的输入。
我想向滤锅模式添加一条规则以捕获一个空列表,但我不知道该怎么做。
现在我有以下示例,演示了对f()
具有两组不同数据的函数的调用。由于列表colander.Invalid
为空,我希望后者触发异常events
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)
建议?