JSON 架构,验证数组中只有一个对象具有 属性 等于值

JSON schema, validate that only one object in array has property equals to value

我有一个有效载荷,我想使用 JSON 模式验证,但在这种情况下我不知道如何转换为模式。

假设我有这个对象:

{
  jobs: [
    { title: "Developer", salary: "100", actual: false },
    { title: "Plumber", salary: "200", actual: true },
    { title: "Teacher", salary: "100", actual: false }
  ]
}

我想编写一个模式来验证如果 jobs 数组中有对象,其中一个(并且只有一个)必须将 actual 键设置为 true.

这可能吗?

是的,这是可能的。您想要使用“items”、“contains”、“minContains”和“maxContains”关键字设置模式,这些关键字利用“if”/“then”能力来编写条件。也就是说,在伪代码中:

  • 我有一个带有 属性“工作”的对象,它的值必须是一个数组。
  • 该数组中的 是对象,它们具有 属性 名为“title”、“salary”和“actual”(带有每个值的特定类型)。
  • 要么“工作”数组有零个 ,要么它必须 包含 恰好一个具有 的项目属性 名为“actual”,其值为 常量,值为真。