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

如何定义含生成UUID键的对象值的JSON Schema?

问题描述

我需要的请求格式如下:

{
   "uuid_1": [{obj}, {obj}, {obj}],
   "uuid_2": [{obj}, {obj}],
   ...
   "uuid_n": [{obj}, {obj}]
}

其中obj是包含若干ID的简单对象,示例如下:

{
 "id": "string",
 "userId": "string"
}

我希望保留该JSON格式,因为修改会导致前后端都需要额外的数据处理。注意:UUID是生成的,我无法提前预知会出现哪些UUID。目前我已通过以下方式指定对象的键必须为UUID格式:

"propertyNames": {
  "format": "uuid"    
}

请问如何定义该对象值的JSON Schema?

解决方案

你可以使用additionalProperties来定义所有UUID键对应的值的结构,结合已有的propertyNames约束,完整的JSON Schema如下:

{
  "type": "object",
  "propertyNames": {
    "format": "uuid"
  },
  "additionalProperties": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "userId": {
          "type": "string"
        }
      },
      "required": ["id", "userId"]
    }
  }
}

关键说明:

  • additionalProperties:用于定义对象中所有动态生成的UUID键对应的值的结构,因为无法提前知晓具体的UUID键名,这个关键字会匹配所有未显式声明的属性。
  • 数组结构约束:指定每个UUID键对应的值是一个数组,数组内的每个元素必须符合items中定义的对象结构——包含id和userId两个字符串类型字段。
  • required字段(可选):如果id和userId是必填字段,添加该数组可以确保这两个字段必须存在于每个数组元素对象中;若为可选字段,可移除该配置。

内容的提问来源于stack exchange,提问作者peter.cambal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:10:05