如何确定一个 json 模式是否是另一个 json 模式的子集?

ppa*_*ckk 5 python jsonschema python-jsonschema

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

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

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

int_schema = {'type': 'integer'}
num_schema = {'type': 'number'}
Run Code Online (Sandbox Code Playgroud)

那我就会

subset(int_schema, num_schema) = True
subset(num_schema, int_schema) = False
Run Code Online (Sandbox Code Playgroud)

不太关心这是 python,我更想知道 json-schema 是否支持这个。

Sam*_*Sam 0

到目前为止,我发现唯一能满足您需求的项目就是这个 Javascript 实现

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

如果有人受到启发,下推自动机将是完成该任务的完美工具!

另一种方法是为 编写一个元模式num_schema,并尝试根据int_schema它进行验证。元模式是自描述的,您可以根据它们验证其他模式(因此是meta)。