允许未知值

时间:2015-01-14 19:16:31

标签: python python-2.7 colander

我在反序列化JSON响应时使用漏勺。有一个字段配置为只有数字,但有时响应具有该字段的null或非数字值,然后我的应用程序抛出无效错误。有没有办法在我的程序中处理它,以便给字段提供一个默认值,比如NA。 这是一个解释这种情况的例子:

这是一个示例:

class SampleClass(colander.MappingSchema):
    name = colander.SchemaNode(colander.String())
    testMark  = colander.SchemaNode(colander.Float(), missing=None)


class Sample(colander.MappingSchema):
    type = colander.SchemaNode(colander.String())
    student = colander.SampleStudent()

I want the following JSON to be accepted and not throw error for testMark as null

{  
   "type":"test",
   "student":{  
      "name":"a name",
      "testMark":null
   }
}

如果代码中出现问题,我很抱歉,这是我第一次使用python。 希望我已经明确了这个场景。每当测试标记不是数字时,我想给testMark字段一个默认值,比如NA。

P.S。这只是一个示例场景,无法在此处发布实际场景。

1 个答案:

答案 0 :(得分:0)

您可以编写自己的SchemaType,它接受任何值,但将其反序列化为float或null。

http://docs.pylonsproject.org/projects/colander/en/latest/extending.html

class MyFloat(colander.Float):

    def deserialize(self, node, cstruct):
        if isinstance(cstruct, float):
            return cstruct
        else:
            return null

我没有对此进行测试,但我希望你明白这一点。