【问题标题】:Is there a python equivalent to the Unix '$?' command?是否有与 Unix '$' 等效的 python?命令?
【发布时间】:2019-09-19 05:26:13
【问题描述】:

我正在使用fastjsonschema 来根据其架构验证 json 记录。 像这样的东西:

import fastjsonschema
validate = fastjsonschema.compile({'type': 'string'})
validate('hello')

如果 json 有效,则返回 json 字符串,否则返回错误字符串。我只想检查json是否有效。为此,我可以做一个比较 validate 方法的输出和 json 输入的解决方法。

但我想要更干净的东西。可能类似于“$?”在 unix 或更好的东西中。

你能推荐我吗?

【问题讨论】:

  • "else return the error string" - 不,如果验证失败,它会引发JsonSchemaException(这是一种非常干净且正确的处理方式)
  • 阅读文档:Exception JsonSchemaException is raised from generated funtion when validation fails (data do not follow the definition). 来自:horejsek.github.io/python-fastjsonschema/…
  • 感谢@rdas 作为 Python 的新手并没有注意到这一点。谢谢。
  • 感谢@Amadan 作为 Python 的新手并没有注意到这一点。谢谢。
  • $? 存在是因为你不能像在 Python 中那样只写 x = validate()

标签: python json python-3.x unix fastjson


【解决方案1】:

documentation看来,如果出现错误,似乎会抛出两个不同的异常:

在 Python 中,您可以像这样简单地将其包装为 try ... except block

try:
    validate = fastjsonschema.compile({'type': 'string'})
    validate(1)
except (fastjsonschema.JsonSchemaException, fastjsonschema.JsonSchemaDefinitionException):
    print("Uh oh ...")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2019-03-23
    • 2011-07-12
    • 2012-04-10
    • 2014-08-05
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多