我有一个json文件和一个架构。该文件有效,但只有当我使json“不那么强”时。例如,当我使用"oneOf": [...
时它是无效的,同样当我使用"anyOf": [...
它有效但"anyOf"
本身允许更多“可能性”时,使它不那么严格。
我希望它尽可能严格。我希望你在这里严格理解我的意思。我如何衡量严格程度?
答案 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样本的数量。