问题标签 [python-jsonschema]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
922 浏览

python - 如何在 ipython 中修复“DistributionNotFound:'jsonschema' 分布 ...”

在安装了 jsonschema 3.0.1 的虚拟环境 (venv) 中,尝试import jsonschema从 ipython 执行会导致以下错误。

python -c 'import jsonschema'作品。

0 投票
0 回答
538 浏览

python - JSON模式,检查值的总和是否超过100

我正在编写一个json模式,它根据数字总和验证文件,存储在一个属性中object,例如下面的示例。A 和 B 之和不能超过 100%。是否有允许这种规范的模式/功能?

提前致谢

0 投票
1 回答
172 浏览

json - jsonschema - oneOf 关键字的行为异常

我正在尝试json使用 Python 验证有效负载jsonschema 3.0.1,大致看起来像这样(简化为麻烦的部分):

一个有效的请求应该有两个字段:topic和 matching message

它们中的每一个都可以param1仅由一个或两个 param1组成,并且param2

  • 有效的:topic { param1, param2 }, body { param1, param2 }
  • 有效的:topic { param1 }, body { param1 }

但它不能既没有topicwith onlyparam1也有 body with both,也不能有 a topicwith both 和 body with onlyparam2

  • 无效的:topic { param1, param2 }, body { param1 }
  • 无效的:topic { param1}, body { param1, param2 }

因为一个节点的内容取决于另一个节点的内容,所以我无法使用dependencies关键字或if-then-else构造,所以我尝试使用, 并提供一个有效子模式列表,其中包含对和版本的oneOf引用字段,如下所示:one_paramboth_params

验证器的行为不是我所期望的:它在两个参数的情况下都失败了,并成功地验证了一个参数或不匹配的参数的情况。

为什么我的验证模式不能像我解释的那样工作?


这是我为此目的编写的整个测试:

  • good_1案例验证失败
  • good_2,bad_1bad_2成功验证案例
0 投票
1 回答
506 浏览

jsonschema - 如何在 json-schema 中扩展具有 1 个参数的对象

我以前写过一个 JSON 模式,但现在,当我试图让它更高级时,我卡住了。

(我对评论中的“良好实践”提示持开放态度)

(是$id可选的吗?为了简单起见,我应该在示例代码中删除它吗?)

目标:

我正在尝试example_obj使用递归使用的对象定义()创建模式。此对象可能只有 1 个参数(orandvalue)。但是在 json 的根目录中,我想添加 1 个附加属性。

json模式

我想通过验证的json:

问题:

当我尝试扩展example_obj根定义时,它似乎失败了,因为该example_obj对象在设计上不允许超过 1 个属性。

换句话说,似乎每次检查我添加的参数数量example_obj也是在附加属性(即filter_version)上执行的。

有谁知道在哪里放置“恰好 1 个参数”的检查,以便不对root对象进行评估?

尝试:

我尝试使用不同的方法来确定 的要求example_obj,但没有成功。就像替换"maxProperties": 1为:

提前感谢您的帮助!!

使用在线模式验证器检查我的模式。

(最后我需要在 Python 中验证它,以防万一)

0 投票
1 回答
2460 浏览

jsonschema - jsonschema 扩展并且没有额外的属性

我正在使用 jsonschema 来验证条目类型,这些条目类型描述了(给定类型的)条目是如何显示的。这些条目可以有页面并分为多个方面。

页面和方面都可以设置条件,我想重用基本模式,即使方面的条件可以具有页面条件没有的 2 个其他属性。

这是我经常遇到的普遍问题。我想扩展一个模式,同时能够在所有情况下将“additionalProperties”设置为 false。

我也看不到用 anyOf 修复它的可能性,allOf 没有重复。

还是我应该放弃additionalProperties或接受重复项?

0 投票
0 回答
1048 浏览

jsonschema - Json 模式无法验证枚举属性中的正确值

我有以下模式和 json,json 模式验证在 log 属性上失败,因为它在实例上找不到值“yes”。验证器工具https://www.jsonschemavalidator.net/中传递了相同的内容,但我的代码中没有。我不知道发生了什么事

[u'yes'] 不是 ['no', 'yes'] 之一

无法验证架构中的“枚举”['properties']['systems']['items']['properties']['log']: {'enum': ['no', 'yes']}

在实例['systems'][0]['log']:[u'yes']

架构

JSON

0 投票
1 回答
163 浏览

python - 如果可选属性无效,JSON Schema 会抛出验证错误

我有一个如下所示的 json 模式,它具有三个可选的属性高度、重量和体积。但我想在这里做以下额外检查:

  1. 如果传递了除了身高、体重和体积之外的任何其他属性,那么它应该会抛出一个错误

不确定如何实现这一点,因为这些是可选属性。

0 投票
0 回答
2043 浏览

json - 带有python jsonschema的未知url类型用于引用路径

我有多个大json-schema文件。许多模式文件都有一些共同的属性。

为了消除公共模式定义之间的冗余,将那些在单独的模式文件中分开并使用$ref来引用单个 JSON 模式。

我所有模式文件的目录结构都像

的内容page.json

文件的内容page_layout.json

结合这两个文件,要验证的示例 JSON 数据是

的内容data会根据type值而变化。

我正在使用python jsonchema来验证 JSON 数据,验证代码是

但这会给$ref文件带来错误,因为

0 投票
1 回答
523 浏览

jsonschema - 如何根据属性存在更改 json 模式?

我的目标是根据属性的存在来更改架构。
这些是我的模式:

这个想法是在“id”属性存在的情况下遵循“existing_sample”模式,并在它丢失的情况下遵循“sample”模式。

当“id”存在时,它会按预期工作,这意味着如果出现未指定的属性,它将引发异常:

不允许附加属性

但如果“id”属性丢失,它将返回异常:

'id' 是必需的属性

好像它仍然遵循“existing_sample”模式。

有任何想法吗?

0 投票
1 回答
400 浏览

python - 如何验证 JSON Schema 文件的有效性?

我有一个像这样的JSON Schema文件,其中包含几个故意的错误:

我想编写一个可以找到这些错误的 Python 脚本(或者,更好的是,安装一个带有 PiP 的 CLI)。

我已经看到了这个答案,它建议执行以下操作(针对我的用例进行了修改):

但上面的脚本没有检测到架构文件中的任何一个错误。我会怀疑它至少可以检测到属性中的额外冒号"type:"

我是否错误地使用了图书馆?如何编写检测此错误的验证脚本?