0

我正在使用滤锅来验证(并反序列化 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'}}
4

0 回答 0