我正在使用滤锅来验证(并反序列化 json 数据)对某些 Web 服务的输入。
我有这种格式的数据:
data = {"interest1": {}, "interest2": "interest2", "interest3": None, "interest4": {"key1": "val1"}}
我想要的输出是:
result = {'interest2': 'interest2', 'interest4': {'key1': 'val1'}}
尝试了一个例子:
import colander
data = {"interest1": {}, "interest2": "interest2", "interest3": None, "interest4": {"key1": "val1"}}
class CustomNode(colander.SchemaNode):
def deserialize(self, value):
if value:
return super(CustomNode, self).deserialize(value)
class Person(colander.MappingSchema):
interest1 = CustomNode(colander.Mapping(), missing=colander.drop)
interest2 = colander.SchemaNode(colander.Str(), missing=colander.drop)
interest3 = colander.SchemaNode(colander.Str(), missing=colander.drop)
interest4 = colander.SchemaNode(colander.Mapping(unknown='preserve'), missing=colander.drop)
print("data = ", type(data), data)
p1 = Person().deserialize(data)
print("p1 = ", type(p1), p1)
p2 = Person().deserialize(p1)
print("p2 = ", type(p2), p2)
我的输出是
data = <class 'dict'> {'interest1': {}, 'interest2': 'interest2', 'interest3': None, 'interest4': {'key1': 'val1'}}
p1 = <class 'dict'> {'interest1': None, 'interest2': 'interest2', 'interest4': {'key1': 'val1'}}
p2 = <class 'dict'> {'interest1': None, 'interest2': 'interest2', 'interest4': {'key1': 'val1'}}