我在反序列化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。这只是一个示例场景,无法在此处发布实际场景。
答案 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
我没有对此进行测试,但我希望你明白这一点。