JSON模式,请验证数组中只有一个对象具有等于值的属性

问题描述

我有一个要使用JSON模式进行验证的有效负载,但是在这种情况下,我不知道如何转换为模式。

假设我有这个对象:

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

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

这可能吗?

解决方法

是的,有可能。您想使用“项目”,“包含”,“ minContains”和“ maxContains”关键字来建立模式,这些模式利用“ if” /“ then”功能编写条件语句。也就是说,使用伪代码:

  • 我有一个具有属性“ jobs”的对象,其值必须是一个数组。
  • 该数组中的
  • 是对象,它们具有名为,“ salary”和“ actual”(具有每个值的特定类型)的<strong>属性</strong>。 。
  • “工作”数组的零个项目,或者它必须包含一个正好具有属性名为“实际”的项目,值是值为true的常量