Python中JSON模式验证的实现

jsonschema-codelane的Python项目详细描述


PyPI versionSupported Python versionsTravis build statusAppVeyor build statusCodecov Code coverageReadTheDocs status

jsonschemaJSON Schema的实现 对于Python(支持2.7+包括python3)。在

>>>fromjsonschemaimportvalidate>>># A sample schema, like what we'd get from json.load()>>>schema={..."type":"object",..."properties":{..."price":{"type":"number"},..."name":{"type":"string"},...},...}>>># If no exception is raised by validate(), the instance is valid.>>>validate(instance={"name":"Eggs","price":34.99},schema=schema)>>>validate(...instance={"name":"Eggs","price":"Invalid"},schema=schema,...)# doctest: +IGNORE_EXCEPTION_DETAILTraceback(mostrecentcalllast):...ValidationError:'Invalid'isnotoftype'number'

也可以从控制台使用:

^{pr2}$

特点

安装

jsonschemaPyPI上可用。您可以使用pip安装:

$ pip install jsonschema

演示

在此联机演示中以交互方式尝试jsonschema

Open Live Demo

在线演示笔记本与此类似:

Open Live Demo

发行说明

v3.1支持ecma262方言正则表达式 按照规范的建议。大 感谢@Zac HD在新的js-regex库中提供创作支持。在

运行测试套件

如果您安装了tox(可能通过pip install tox或 包管理器),在源目录中运行tox 签出将在所有版本上运行jsonschema的测试套件 对Pythonjsonschema的支持。如果你没有 在jsonschema下测试的版本,您可能希望运行 使用tox--skip-missing-interpreters选项。在

当然,您也可以使用 最喜欢的测试运行程序。测试位于jsonschema.tests包中。在

基准

jsonschema的基准测试使用了pyperf。在

运行它们可以通过tox -e perf,或者调用pyperf 外部命令(确保它和jsonschema本身都是 已安装):

$ python -m pyperf jsonschema/benchmarks/test_suite.py --hist --output results.json

要与上一次运行进行比较,请使用:

$ python -m pyperf compare_to --table reference.json results.json

有关详细信息,请参阅pyperf文档。在

社区

有一个mailing list 对于这个在googlegroups上的实现。在

请加入,并随时提出问题。在

贡献

我是朱利安·伯曼。在

jsonschemaGitHub上。在

通过GitHub或其他方式联系,如果你有什么贡献, 那将是最受欢迎的!在

您也可以在Freenode(nick:tos9)上找到我 频道,包括#python。在

如果你感激不尽,你也可以用啤酒钱来讨好我 在我的GitHub个人资料中通过谷歌支付。在

感谢那些对jsonschema及其持续支持的公司 而增长,jsonschema现在也可以通过TideLift来支持。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在OSGI中使用cxf生成的客户端时出现Java类装入器问题和JaxB异常   java为什么要在javamail中迭代多部分电子邮件中的部分?   并发编程问题   JFileChooser&&System中未调用java windowClosing。退出功能不正常?   SQL查询的java语法分析   java如何使用AspectJ声明字段上的警告   什么是java向量。元素()C#等价物   java解析Android应用程序中tornado web服务中的CSV文件   java我试过c2dm,我需要服务器端   java调整JPanel大小以适应新的JLabel图标   Java与Python脚本的通信   java使用Saxon通过XSLT生成URL   java net::ERR_complete_CHUNKED_编码200(OK)来自struts应用程序中的tomcat   java如何为我的窗格设置不同的位置?   java使用Cypher Neo4j获取给定类型的所有节点(从SQL世界中的tablename中选择*)   nio使用Java解析文件值   java使用WSDL生成REST客户端会是错误的方向吗?   java如何在我的应用程序中构建类映射?   java按钮。setEnabled在第一个循环中不起作用   xPath适用于最后一页,但不适用于第一页