首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许未知值

允许未知值
EN

Stack Overflow用户
提问于 2015-01-15 03:16:31
回答 1查看 83关注 0票数 2

我在反序列化JSON响应时使用了漏斗。有一个字段被配置为只包含数字,但有时该字段的响应具有null或非数字值,然后我的应用程序会抛出invalid错误。有没有一种方法可以在我的程序中处理它,给这个字段一个默认值,比如NA。这里有一个例子来解释这种情况:

这是一个示例:

代码语言:javascript
复制
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。

附注:这只是一个示例场景,不能在这里发布实际的场景。

EN

回答 1

Stack Overflow用户

发布于 2015-01-15 05:39:51

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

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

代码语言:javascript
复制
class MyFloat(colander.Float):

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

我没有对此进行测试,但我希望您能理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27950726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档