You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写JSON Schema校验数组内someKey字段值的唯一性

可以实现,以下是符合需求的具体实现方案:

可用JSON Schema代码

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["something01", "something02", "something03"],
  "properties": {
    "something01": {
      "type": "string"
    },
    "something02": {
      "type": "string"
    },
    "something03": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["someKey", "somethingElse"],
        "properties": {
          "someKey": {
            "type": "string"
          },
          "somethingElse": {
            "type": "string"
          }
        }
      },
      "uniqueItems": {
        "$data": "1/someKey"
      }
    }
  }
}

规则说明

  1. 该Schema基于JSON Schema Draft 07规范编写,兼容绝大多数主流JSON校验工具
  2. 先约束了外层对象必须包含something01、something02、something03三个字段,同时约束了something03数组下的每个元素必须包含someKey和somethingElse字段
  3. 核心判重逻辑通过uniqueItems搭配$data引用实现:1/someKey为相对JSON指针,含义是取数组每个元素下someKey字段的值作为判重依据,只要存在任意两个元素的someKey值相同,校验就会失败。

校验效果

  • 你提供的第一个合法样例,someKey值无重复,可正常通过校验
  • 后续两个存在someKey重复值的样例,都会触发uniqueItems规则错误,被拦截无法通过校验。

注意事项

如果使用的校验工具默认未开启$data特性支持,需要手动开启配置:比如JavaScript生态的Ajv校验器,初始化时需要传入{ $data: true }参数。

内容的提问来源于stack exchange,提问作者Michael D O'Shea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:15:03