JSON Schema:至少需要一个非位置数组元素

时间:2016-08-07 13:24:52

标签: jsonschema

你好伙伴stackoverflowers!

我对JSON架构代码和验证JSON数组有“问题”。我的问题是我要求数组中至少有一个元素遵循某个模式,但其余元素可以是自由形式。我不能假设我的搜索元素位于数组的某个位置。仅使用整数(为简单起见),问题可以改为:“编写一个模式,验证数组中至少有一个1,无论其位置如何”。积极的例子是:

[1]
[0, 0, 1]
["a", true, null, 1, false, null, 3.2]
[1, 1, 1, 1]

否定的例子是:

[]
["a"]
[0, 2, 4]

使用json-schema.org(草案04)中的文档并玩JSON Schema Validator我想出了我自己的解决方案,它使用双重否定并且感觉非常麻烦:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "testid",
  "title": "test array schema",

  "not": {
    "items": 
      {
        "not": { "enum": [1] }
      }
  }
}

它使用的原则是“not(for-all-items(not is 1))”,虽然有效,但感觉不是很优雅。对于我错过的数组有什么“需要”吗?

感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

你没有遗漏任何东西。您可以为所有项指定架构,也可以为每个索引指定架构。这就是你必须要做的所有事情。

草案05提出了contains关键字,但草案05的进展已暂停一段时间了。您拥有的架构是草案04中最好的。