我在反序列化JSON响应时使用了漏斗。有一个字段被配置为只包含数字,但有时该字段的响应具有null或非数字值,然后我的应用程序会抛出invalid错误。有没有一种方法可以在我的程序中处理它,给这个字段一个默认值,比如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。
附注:这只是一个示例场景,不能在这里发布实际的场景。
发布于 2015-01-15 05:39:51
您可以编写自己的SchemaType,它接受任何值,但将其反序列化为浮点型或空值。
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我没有对此进行测试,但我希望您能理解。
https://stackoverflow.com/questions/27950726
复制相似问题