Ich verwende colander
zu validieren (und Deserialisierung JSON-Daten) Eingabe für einige Web-Services.Catch leere Liste mit Sieb
Ich möchte eine Regel zu einem Sieb-Schema hinzufügen, um eine leere Liste zu fangen, aber ich kann nicht herausfinden, wie es geht.
Jetzt habe ich das folgende Beispiel, einen Aufruf der Funktion f()
mit zwei verschiedenen Datensätzen demonstriert. Gerne möchte ich später die colander.Invalid
Ausnahme auslösen wegen der leeren events
Liste
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)
Verbesserungsvorschläge?
BANG! Spot auf. Danke, Mann! Irgendwann probierte ich das fast aus, konnte es aber nicht richtig machen. Wo ist der Spendenbierknopf, wenn Sie ihn brauchen? – mogul