问题标签 [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 回答
630 浏览

jsonschema - 在python中验证json模式中的未知属性名称

上面的代码验证了具有非间隔字符串数组项的属性价格。即使我们不知道传入的属性名称,是否可以验证该属性?

可能像下面这样

0 投票
0 回答
323 浏览

python - 使用 anyOf 关键字验证 jsonschema 时设置默认值

我想使用在我的架构中定义的默认值。我发现 python-jsonschema 常见问题解答中已经有一个示例:https ://python-jsonschema.readthedocs.io/en/stable/faq/

该示例扩展了property关键字的默认验证器并根据需要设置默认值。anyOf但是,一旦在同一架构中使用关键字,我就会遇到问题。

让我给你举个例子:

此示例实际上按预期工作。运行它提供以下输出:

因此,该属性some_property已正确设置为默认值 1。但是,如果我们现在class_name将对象内的 更改为another_class,这适合anyOf列表中的第二个条目,我们会遇到以下问题:

=>

在迭代anyOf列表时,给定的实例anyOf已经被第一个子模式更改。验证器调用每个子模式的anyOf所有相关验证器,结果第一个子模式的properties验证器将第一个子模式的默认值插入到当前实例中。当子模式的验证不成功时,也会发生这种情况anyOf。结果,不适合此示例的第一个子模式插入了属性'some_property': 1

所以现在anyOf到了通常适合对象的第二个子模式,另一个键已添加到实例中,导致验证失败以及additionalProperties不允许。结果,在其中没有找到有效的模式anyOf,我们得到了上述错误。

那么如何解决这个问题呢?我的方法是anyOf在迭代子模式列表时存储实例的值。如果子模式不匹配,则应还原此子模式所做的所有更改。不幸的是,直到现在,我都无法实现这种行为。

作为参考,这是我最近尝试的样子:

在内部这似乎有效,验证也有效。但由于某种原因,现在obj给出的内容{"my_list": [{"class_name": "another_class"}]}是:

我不明白为什么。我猜字典在通过验证器时会发生变化,因为它们是可变的。因此,尝试重置实例可能不会在全局上下文中产生预期的效果。但是,我无法弄清楚如何解决这个问题。有人可以帮忙吗?

0 投票
1 回答
105 浏览

python - JSON 与 Python:jsonschema 没有预期的验证错误

我已经定义了一个模式并用它来验证 JSON 对象,但我从来没有得到预期的 ValidationError。例如:

谁能看到我做错了什么?

0 投票
1 回答
565 浏览

json - JSON 模式:属性值必须等于父键

根据JSON-Schema 7.0 String section,我可以使用 a"relative-json-pointer"来确保属性值与父键完全匹配。

Relative JSON Pointers的示例部分(5.1)中,它显示了“上一级”并获取键值, is "0#"

给定以下 JSON 文档:

以下 json-schema 应捕获该"invalid"对象:

我确信 json-schema 是合理的,因为它会在以下 JSON 文档中捕获两个对象"invalid2""invalid3"

我已经使用ajv-cli 3.3.0python jsonschema 3.2.0进行测试。但是两种验证实现都不会捕获该"invalid"对象。两种实现都声称完全支持 JSON Schema Draft 7。

0 投票
1 回答
1346 浏览

python - 找不到 jsonschema 的包元数据

我对此很陌生。我安装jsonschemaimportlib_metadata手动将其复制到我正在synthesis使用的文件夹中,make synvlsi在我的情况下的文件夹。

它以这个错误终止:importlib_metadata.PackageNotFoundError: No package metadata was found for jsonschema

我在这里找到了一些解决方案:http: //biercoff.com/how-to-fix-package-not-found-error-importlib-metadata/但是在哪里可以找到 serverless.yml 文件,并且会使slimtrue 到 false 影响其他事物?知道什么可能导致此错误吗?

0 投票
1 回答
559 浏览

json - 如果条件与使用 JSON 模式草案 7 的相对参考

当我引入条件 if / then 语句时,我想使用 json 模式将相对 JSON 指针引用与 $ref 模式结合起来。

在这种情况下,我想要求:

  • 如果 system = Phone 则需要 usePhone 元素
  • 如果 system = Email 则需要 useEmail 元素

当我使用模式进行验证时,模式正在生成错误 - 我怀疑if -> $ref / enum代码是问题的原因。json-schema 文档建议在定义的元素内嵌套所需的常量/枚举值,但是当我的元素是 $ref 位置时,我不确定如何执行此操作,例如:

https://json-schema.org/understanding-json-schema/reference/conditionals.html

需要相对模式是因为 ContactPoint 的实例在组合模式中的多个位置使用。

参考:

例子:

谢谢!

0 投票
0 回答
54 浏览

python - 如何在json文件数组python中添加数据

我想编辑 Json 文件并在 json 文件中添加数据

这是我从 api 响应中获得的 json 文件-

我想以相同的格式将其添加到上述 json 文件的变量部分中 -

我正在使用它来保存 json 文件 -

我需要在此处添加什么代码才能在我的 json 文件中更新所需的 Json 数据?

0 投票
0 回答
12 浏览

json - 我需要帮助来构建自己的 json 架构

如何构建自己的 json 模式来验证从 api 返回的 json 是相同的结构?我有这个示例 JSON

有时它可能具有不同的结构,我需要构建自己的 json 模式以在操作 json 数据之前验证它是否相同。如何构建自己的架构以确保它具有有效的结构?

0 投票
1 回答
71 浏览

python - 你应该如何用python更新本身就是值的键的JSON值

我有 2 个文件,一个是 test.json,另一个是我的 test.py 我的目标是更新键“test3”的值,而不是等于 3(如下所示),更新和变成10。

这是test.json

这是test.py

运行后,我期望的输出是:

请注意,“test3”值变为 10,但实际上,我的输出变为:

缩进不是问题,而是它没有将“test3”从 5 更改为 10,而是在末尾添加了一个值为 10 的新“test3”键,并使旧键保持不变。我也尝试过要求程序只打印出“test”中任何键的值,但它没有这样做,唯一有效的是打印出“test”本身的值或“test5”前导我相信他们的位置是什么搞砸了。对此的任何解决方案将不胜感激,如果您好奇,我无法将 JSON 文件更改为更整洁的解决方案,因为我正在使用它来处理视频游戏 Minecraft 中的 JSON 文件,我担心会弄乱预先存在的结构会干扰游戏读取文件的设计方式。

0 投票
0 回答
87 浏览

json - Jsonschema 验证

我正在研究 Json 模式验证,下面是代码。我需要对元素“pii”进行架构检查。

这些值只能是在列(field1、field2 或 field3)中定义的列,并且所有列名都没有组合。列名和列数是动态的,并且每个 json 都不同。下面的当前 json 示例有 3 个列名,接下来可能会有更多。

  1. 如何为 pii 添加架构检查?
  2. 有没有更好的方法来验证 column_names(field1, field2, field3)、column_description 或 column_datatype 中是否有值?
  3. 我可以将列数据类型限制为一组数据类型值 ['integer','string','object']

谢谢你的时间!