如何衡量json模式的严格程度?

时间:2014-10-08 11:22:29

标签: json schema jsonschema

我有一个json文件和一个架构。该文件有效,但只有当我使json“不那么强”时。例如,当我使用"oneOf": [...时它是无效的,同样当我使用"anyOf": [...它有效但"anyOf"本身允许更多“可能性”时,使它不那么严格。

我希望它尽可能严格。我希望你在这里严格理解我的意思。我如何衡量严格程度?

1 个答案:

答案 0 :(得分:0)

即使我们只考虑“oneOf”vs“anyOf”,我认为你不能对模式的限制进行原则性评估。

让我们看看以下两个例子。他们是非常强迫的例子,但是你可以想出许多不那么做作的人。

{   “任何”: [     {“type”:“string”,“maxLength”:5},     {“type”:“string”,“minLength”:5}   ] }

{   “oneOf”:[     {“type”:“string”,“maxLength”:5},     {“type”:“string”,“minLength”:5}   ] }

从数学的角度来看,模式的限制取决于您想要模型的样本范围。除非你将模型与样本范围联系起来,否则你不能说模型比其他模型更准确。

因此,我建议您采用经验/测试驱动的方法来评估模型的准确性。 您可以构建一组有效和无效的json样本,并创建一个json-schema候选列表。 然后选择json-schema,在验证所有有效样本的同时最大化无效json样本的数量。