【问题标题】:Validate JSON schema for expected values验证预期值的 JSON 模式
【发布时间】:2019-12-03 18:17:56
【问题描述】:

我有一个我想验证的 JSON。 数组中有一个对象,每个对象中都有一个名为name的属性。

我想第一次验证有 3 个对象。 我想验证每个属性的值。

{
  "hello": [
    {
      "world": "value 1"
    },
    {
      "world": "value 2"
    },
    {
      "world": "value 3"
    }
  ]
}

我想使用 JS0N 架构验证 JSON 是否具有 value 1value 2value 3

【问题讨论】:

  • 请展示你到目前为止所做的尝试。
  • Pedro 欢迎来到 StackOverflow。我建议您阅读stackoverflow.com/tour 的导游 - 这解释了如何以符合网站目的和当前用户期望的方式提出问题。希望您可以重新表述您的问题以遵循这些准则,包括解释您迄今为止所做的尝试。目前看来您还没有尝试找到答案。
  • 您写道“在每个对象中都有一个名为name 的属性”,但显然情况并非如此。请说清楚。另外,您是否要求使用 ruby​​ 的解决方案?除了“JSON Schema”之外,您是否对模式语言持开放态度?

标签: json ruby schema jsonschema


【解决方案1】:

使用JSON Extended Structural SchemasJESS)的语言,三个需求可以用JSON写成如下(假设你的意思是world而不是name):

["&",
 { "hello": [ {"world": "string"} ] },
 {"forall": ".[hello]|length", "equal": 3 },
 {"setof": ".[hello][]|.[world]", "supersetof": ["value 1", "value 2", "value 3" ]}
 ]

这可能不是您想要的,例如也许您希望在不参考顶级键名称的情况下编写约束。这可以按如下方式完成:

["&",
 {"forall": ".[]", "schema":  [ {"world": "string"} ] },
 {"forall": ".[]|length", "equal": 3 },
 {"setof": ".[][]|.[world]", "supersetof": ["value 1", "value 2", "value 3" ]}
 ]

您还可以修改上述内容以表达要求,而不会阻止对象具有附加键。这一切都取决于你真正想要什么。

请注意,JESS 检查器需要 才能运行。 jq 有一颗红宝石。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2017-07-03
    • 2018-01-23
    • 2021-02-12
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多