如何确保键应该是某些用户定义的数组中的项之一

时间:2012-12-17 14:24:40

标签: json schema jsonschema

我使用JSON来定义一些配置文件,我想用json scheme验证它们。我的问题是我想确保某个对象的键应该是在同一个JSON中定义的数组项的子集: 例如:

有效:

{
      "files": ["file1", "file2"],
      "filelocations": {
           "file1": "/etc/globalconfigs/file1.conf",
           "file2": "/usr/bin/file2.sh"
      }
}

无效(其他密钥不在files中):

{
      "files": ["file1", "file2"],
      "filelocations": {
           "file1": "/etc/globalconfigs/file1.conf",
           "otherkey": "/usr/bin/file2.sh"
      }
}

等。我想要的是确保在filelocations数组中找到files的键。 虽然在这个例子中,我们可以通过组合键值来改变JSON的结构,这样就不需要有这种约束,在我的例子中我不能像这样改变JSON,所以很高兴有一个验证这个机制。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

使用JSON Schema无法实现这一点,没有可以保证这一点的关键字组合。

如果您喜欢冒险(我甚至可以为您编写代码),您可以使用my JSON Schema API并编写自定义关键字以满足您的需求。这是可行的。