【问题标题】:JSON schema, validate that only one object in array has property equals to valueJSON模式,验证数组中只有一个对象的属性等于值
【发布时间】:2020-08-26 13:33:01
【问题描述】:

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

假设我有这个对象:

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

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

这可能吗?

【问题讨论】:

  • 你能分享一下你的 JSON Schema 吗?有可能,我会为你提供解决方案=]

标签: javascript node.js json jsonschema


【解决方案1】:

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

  • 我有一个具有property“jobs”的对象,它的值必须是一个数组。
  • 该数组中的 items 是对象,它们具有名为“title”、“salary”和“actual”的 properties(每个值都有特定的类型) .
  • “jobs”数组有零个items,或者它必须包含恰好一个具有名为“actual”的属性的项目value 是一个 常量,值为 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多