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

时间:2019-05-20 00:32:21

标签: python jsonschema python-jsonschema

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

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

举个超级简单的例子,假设我的模式是

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

那我就有

subset(int_schema, num_schema) = True
subset(num_schema, int_schema) = False

我并不真的在乎这个是python,我更想找出json-schema是否支持此功能。

1 个答案:

答案 0 :(得分:0)

到目前为止,我发现唯一可以满足您需求的项目是this Javascript implementation

考虑到当后端与前端进行通信时JSON模式确实会发光,Python实现(甚至是命令行实用程序)将非常有用,并且JavaScript不是最受欢迎的后端语言,而是一种非常流行的前端语言,最后一个。

如果有人在那里受到启发,下推自动机将是完成确切任务的理想工具!

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