如何确定一个JSON-Schema是否是另一个的子集?

4

假设我有两个json-schema,是否可以(在Python或其他任何地方)确定一个是否是另一个的子集?

我正在寻找一个能够对两个JSON Schema进行比较的函数,只有当第一个JSON Schema接受的每个实例也被第二个Schema接受时才返回true。

举一个超级简单的例子,假设我的schemas是:

int_schema = {'type': 'integer'}
num_schema = {'type': 'number'}

然后我会有:
subset(int_schema, num_schema) = True
subset(num_schema, int_schema) = False

我并不是特别关心这是否是Python语言,我更想知道 JSON Schema 是否支持这个特性。

2个回答

0
这是一个带有Pydantic支持的Python实现-isjsonschemasubset。免责声明:作者。
从文档中可以看到:
from isjsonschemasubset import dump, issubset, load

json_schema_a = load(path_to_a)
json_schema_b = load(path_to_b)

for error in issubset(json_schema_a, json_schema_b):
    ...

0

到目前为止,我找到的唯一符合您要求的项目是这个JavaScript实现

一个Python实现(甚至是命令行实用程序)将非常有用,考虑到JSON模式在后端和前端通信时真正发挥作用,而JavaScript并不是最受欢迎的后端语言,但却是非常受欢迎的前端语言。

如果有人在那里感到灵感,下推自动机将是完成该任务的完美工具!

另一种方法是编写一个元模式来验证int_schema。元模式是自描述的,您可以针对它们验证其他模式(因此称为“元”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接