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

需求:通过JSON Schema校验确保所有层级ActionCode与HeaderActionCode一致

实现所有层级ActionCode与HeaderActionCode一致的JSON Schema校验

要实现无论嵌套层级多少,所有节点的ActionCode都与LeadDetails.HeaderActionCode值一致的校验,可以借助JSON Schema的递归引用和**数据引用($data)**特性来完成。以下是具体的Schema实现和说明:

完整JSON Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "Body": {
      "type": "object",
      "properties": {
        "LeadDetails": {
          "type": "object",
          "properties": {
            "HeaderActionCode": {
              "type": "string"
            },
            "ActionCode": {
              "type": "string",
              "$data": "/Body/LeadDetails/HeaderActionCode"
            },
            "Version": {
              "type": "integer"
            },
            "LineItems": {
              "type": "array",
              "items": { "$ref": "#/$defs/LineItem" }
            }
          },
          "required": ["HeaderActionCode", "ActionCode"],
          "$defs": {
            "LineItem": {
              "type": "object",
              "properties": {
                "ActionCode": {
                  "type": "string",
                  "$data": "/Body/LeadDetails/HeaderActionCode"
                },
                "Version": {
                  "type": "integer"
                },
                "LineItems": {
                  "type": "array",
                  "items": { "$ref": "#/$defs/LineItem" }
                }
              },
              "required": ["ActionCode"]
            }
          }
        }
      },
      "required": ["LeadDetails"]
    }
  },
  "required": ["Body"]
}

关键特性说明

  • $data 数据引用:每个ActionCode字段通过$data: "/Body/LeadDetails/HeaderActionCode"直接引用根层级的Header值,强制所有ActionCode与该值完全匹配。注意该特性仅支持JSON Schema Draft 07及以上版本。
  • 递归结构校验:通过$ref: "#/$defs/LineItem"定义递归的LineItem结构,不管LineItems嵌套多少层,都会自动应用相同的校验规则,确保所有子节点的ActionCode符合要求。
  • 必填字段约束:明确标记HeaderActionCode和所有层级的ActionCode为必填字段,避免因缺失关键字段导致校验逻辑失效。

校验效果示例

  • 符合要求的JSON(如你提供的示例)会通过校验;
  • 若任意层级的ActionCode值与HeaderActionCode不一致(例如把某层ActionCode改为"Update"),校验会直接报错。

内容的提问来源于stack exchange,提问作者Deepak Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:30:54