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

如何在JSON Schema中定义基元素为指定类型的任意层级嵌套数组

实现方案

你需要的能力可以通过JSON Schema的递归定义实现,核心逻辑是让数组元素的校验规则递归引用自身,适配任意嵌套深度,无需提前预知层级:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "nestedStringOrArray": {
      "anyOf": [
        // 最底层元素必须是字符串
        {
          "type": "string"
        },
        // 嵌套数组的每个元素都符合当前递归规则
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/nestedStringOrArray"
          }
        }
      ]
    }
  },
  // 根节点直接应用递归规则
  "$ref": "#/definitions/nestedStringOrArray"
}

校验逻辑说明

  • 合法示例:["a", ["b", ["c"]]] 会正常通过校验,所有底层元素都是字符串
  • 非法示例:["a", [1, ["c"]]] 会校验失败,因为嵌套层出现了非字符串的数字类型
  • python的jsonschema库完全兼容该规则,无需额外依赖配置

全局元素唯一校验

JSON Schema原生的uniqueItems仅能校验当前层级数组的元素唯一性,无法跨嵌套层级校验全局唯一,你提到的将数组扁平化后在Python侧自行校验是性价比更高的实现方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:15:01