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

如何用JSON Schema验证图中边指向的节点存在性?

用JSON Schema验证网络图边的端点合法性

当然可以实现!你需要用到JSON Schema中的$data关键字(要求验证器支持JSON Schema Draft 07及以上版本),它允许你引用待验证JSON实例中的数据,而非硬编码在Schema里的固定值。

完整JSON Schema示例

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["V", "E"],
  "properties": {
    "V": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "uniqueItems": true
    },
    "E": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["v1", "v2"],
        "properties": {
          "v1": {
            "type": "string",
            "const": {
              "$data": "/V/*"
            }
          },
          "v2": {
            "type": "string",
            "const": {
              "$data": "/V/*"
            }
          }
        }
      }
    }
  }
}

关键逻辑说明

  • $data": "/V/*":通过JSON Pointer语法,直接引用当前实例中V数组的所有元素,让v1和v2的值必须匹配其中某一项。
  • "uniqueItems": true:可选配置,强制顶点ID不重复,避免出现冗余顶点。
  • 层级校验:先确保V是字符串数组、E是指定结构的对象数组,再校验每条边的端点合法性。

验证效果

  • 你提供的第一个合法示例会顺利通过验证。
  • 第二个包含无效端点的示例会验证失败,因为v2的IdThatDoesNotExistAbove不在V数组的元素列表中。

注意事项

部分旧版JSON Schema验证器可能不支持$data关键字,建议使用支持Draft 07+的工具,比如Ajv(JavaScript)、JSON Schema Validator(Java)等。

内容的提问来源于stack exchange,提问作者jonas-l-b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:46:05