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

如何在JSON Schema中引用所有名称任意的嵌套字符串属性?

问题

我希望在JSON Schema中引用所有名称任意的嵌套字符串类型属性。示例数据如下(实际包含更多列):

[
    {
        "var_1": "some_string",
        "var_2": {
                "col_1": "x",
                "col_2": "y",
                "col_3": "z"
                },
        "var_3": "another_string"
        
    }
]

我通过yaml转json工具得到了如下JSON Schema,但我的文件扁平化流程无法获取其中的嵌套信息:

{
  "$id": "main.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "some data",
  "type": "object",
  "properties": {
    "var_1": {
      "$ref": "another_schema.json#/definitions/var_1"
    },
    "var_2": {
      "type": "object",
      "properties": {
        "fieldNames": {
          "uniqueItems": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "var_3": {
      "type": "string",
      "description": "another variable"
    }
  }
}

请问是否存在其他方式可以引用这类名称任意的嵌套字符串属性(如col_1、col_2、col_3)?

解决方案

1. 修正var_2的Schema定义

自动生成的Schema错误地将var_2的嵌套属性定义为fieldNames数组,而实际数据中var_2是一个键名任意、值均为字符串的对象。你需要使用additionalProperties关键字来定义这类结构:

{
  "$id": "main.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "some data",
  "type": "object",
  "properties": {
    "var_1": {
      "$ref": "another_schema.json#/definitions/var_1"
    },
    "var_2": {
      "type": "object",
      // 定义所有任意键名的属性值为字符串
      "additionalProperties": {
        "type": "string"
      }
    },
    "var_3": {
      "type": "string",
      "description": "another variable"
    }
  }
}

2. 复用任意字符串属性的规则

如果需要在多个地方引用这种“任意键名+字符串值”的对象结构,可以把规则抽离到definitions中,通过$ref复用:

{
  "$id": "main.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "some data",
  "type": "object",
  "properties": {
    "var_1": {
      "$ref": "another_schema.json#/definitions/var_1"
    },
    "var_2": {
      "$ref": "#/definitions/arbitraryStringProperties"
    },
    "var_3": {
      "type": "string",
      "description": "another variable"
    }
  },
  "definitions": {
    "arbitraryStringProperties": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  }
}

3. 适配扁平化流程

修正后的Schema明确了var_2的结构是任意键值对的字符串对象,大部分支持JSON Schema的扁平化工具都能识别additionalProperties关键字,从而遍历所有嵌套属性(如col_1、col_2)进行扁平化处理。如果工具仍不支持,需确认其是否兼容JSON Schema draft-07版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:05:35