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

jsonschema - 使用 JsonSchema 和 $ref 验证对象的异构列表

我已经看到了与此特定情况不完全匹配的类似问题的答案,因此如果我错过了相关答案,我们深表歉意。

我有一个要验证的异构对象数组。这些对象在顶层具有相同的格式,但子对象完全不同,只能通过每个子对象中存在的属性来识别。

尽管数组中有两个以上的对象类型,但问题映射到验证以下数据:

我正在使用以下模式,它声称即使“params”键下的对象无效也可以验证输入 json。如何修复 json 架构?

先感谢您!

0 投票
1 回答
971 浏览

python - 将 json 数据写入 json 文件时出现 JSON.parse 错误

我正在尝试逐行从本地主机 URL 获取 JSON 数据并将其插入 JSON 文件。当我尝试打开文件时,我收到一条错误消息,显示Multiple JSON root elements.

0 投票
1 回答
1127 浏览

python - 为什么使用这个包含“allOf”的模式进行 JSON 验证总是成功的?

我有一个 JSON 模式,我想使用 python 和 jsonschema 模块验证一些数据。但是,这并不像预期的那样工作,因为某些接受的数据似乎根本无效(对我和我的应用程序的目的而言)。可悲的是,提供了架构,所以我无法更改架构本身 - 至少不能手动更改。

这是架构的缩短版本(以下代码中的“schema.json”):

这是一个应该是有效实例的示例(下面代码中的“person.json”):

这是应视为无效的示例(以下代码中的“no_person.json”):

这是我用于验证的代码:

结果:
person.json is valid
no_person.json is valid

我预计 no_person.json 无效。要成功验证诸如 person.json 之类的数据,可以做些什么?非常感谢您的帮助,我对此很陌生(花了很长时间寻找答案)。

0 投票
1 回答
109 浏览

jsonschema - jsonschema:来自有限集合的可选元素

最小示例(python 3.x):

架构应确保所有必填字段都在 JSON 中(工作正常)。它应该将附加属性限制为_optional_fields字典中的属性。(我被困的地方)。

如果没有可选属性,您只需设置additionalPropertiesFalse. 然后是minPropertiesandmaxProperties来限制附加属性的数量。但是如何将这些限制为固定选择?

编辑:

感谢@Relequestual。解决方案非常简单。我设置"additionalProperties": False了,现在它只接受必填和可选字段,除此之外什么都不接受。

0 投票
1 回答
190 浏览

jsonschema - 多阶段 $ref 不适用于 jsonschema 版本 3.0.1

似乎 jsonschema 版本 3.0.1 不接受使用 $refs 的多阶段模式(虽然它适用于 jsonschema 版本 2.6.0)。

我必须让它在几个模块版本下工作,因为我的代码将在不同环境的不同计算机上运行。

我在https://www.jsonschemavalidator.net/上验证了我的 json (感谢在另一个 StackOverflow 问题中找到的此链接)。

我试过了 :

注意:*.schema.json 都在https://www.jsonschemavalidator.net/上工作

文件 myjson.json :

文件 noRefs.schema.json :

文件 usingRefs.schema.json :

收到错误消息:

0 投票
1 回答
490 浏览

python - 如何确定一个 json-schema 是否是另一个的子集?

假设我有两个 json 模式 - 是否有可能(在 python 或其他任何地方)确定一个是否是另一个的子集?

我正在寻找一个关于两个 json 模式的函数,当且仅当第一个 json 模式接受的每个实例也被第二个接受时才会返回 true。

对于一个超级简单的例子,假设我的模式是

然后我会有

真的不在乎这是python,我更想知道json-schema是否支持这一点。

0 投票
1 回答
34 浏览

python - 按特定顺序设置python json数据

我有一个 json 数据,当打印出来时,它不会按照我设置的顺序打印。

当我运行上面的代码时,我得到了这个:

问题是,这些数据都是乱序的。我希望数据看起来像这样(注意时间戳):

我希望时间戳排在第一位,因为我在 myjson 变量中设置的原始数据中指定了它。

我用谷歌搜索了这个,但没有找到可行的解决方案。出于可移植性的原因,我希望仅使用默认的 python 库/模块来解决这个问题。

0 投票
1 回答
2113 浏览

python - 当且仅当嵌套对象中存在特定键时才需要 JSON Schema 条件

我对 jsonschema 的问题是双重的:

给定

  1. 如何检查“foo”中是否存在键“ar”?

  2. 并且仅当“ar”存在于“foo”中时,如何才能使“bar”必须存在于给定的json中?

我曾尝试查看其他 SO 答案或 jsonschema 文档,但它们似乎只检查键是否具有特定值,而不是键是否存在而不管其值如何。嵌套对象的 jsonschema 似乎只检查嵌套的最深层次,而不是中间的某个地方。

我想出了这个,但它不起作用。

0 投票
1 回答
404 浏览

jsonschema - 如何验证可以包含作为不同类型对象的项目的数组

我有一个模式,其中我有一个数组(在传输对象内),它可能有两个选项(A 或 B)之一。

我已经附加了模式和示例数据(当它应该抛出错误时,它实际上正在得到验证)。

在transmitDataDef->items下,我尝试了“anyOf”、“oneOf”、“type”,即使数据不匹配,它们都不会出错(数据包含未在任何地方定义的optionC)

我正在使用 jsonschema python 库。我也在https://www.jsonschemavalidator.net/中尝试过这个模式 + 数据,结果相同。

架构:

样本数据:

我希望验证能够捕获“optionC”并将其标记为错误。如果我有 optionB 而不是 optionC,我希望它将“data1”标记为无效项目。

0 投票
0 回答
40 浏览

python-3.x - 如何修复 TypeError 不可散列类型:'rqm__Cell' ->(自动生成的类)

我正在使用 python-json-schema-objects 从模式中自动生成类。我正在尝试用已经生成的对象填充数组。

但我收到了这个错误 -

TypeError 不可散列类型:'rqm__Cell'

我的问题和错误与此处发布的问题非常相似 https://github.com/cwacek/python-jsonschema-objects/issues/126

这是架构

我正在使用的代码是

在最后一行我得到这个错误

TypeError 不可散列类型:'rqm__Cell'

非常感谢任何类型的铅