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

如何在JSON Schema中标识对动态添加属性的支持

解决JSON Schema中允许未知属性的问题

嘿,作为刚接触JSON Schema的新手,你的需求其实很常见——我们只需要用到additionalProperties这个关键字就能轻松搞定!

先看你原来的Schema,它只定义了必须存在的original_msg属性,但没有处理那些预先未知的额外属性。我们来调整一下:

"tx_properties": {
  "type": "object",
  "required": ["original_msg"],
  "properties": {
    "original_msg": { "type": "string" }
  },
  "additionalProperties": true
}

关键细节解释:

  • required: ["original_msg"]:确保tx_properties对象里必须包含original_msg这个字符串属性,和你最初的需求完全匹配。
  • additionalProperties: true:这是核心!它允许对象添加任意数量的未知属性,这些属性的值可以是任何JSON类型(字符串、数字、嵌套对象等等),完美适配你给出的示例JSON结构。

如果之后你想给额外属性的值做一些类型限制(比如只允许字符串、数字或对象),也可以把additionalProperties改成一个子Schema,比如:

"additionalProperties": {
  "anyOf": [
    { "type": "string" },
    { "type": "number" },
    { "type": "object" }
  ]
}

另外,你原来Schema里的anyOf其实是多余的——因为required已经直接指定了必须存在的属性,不需要用anyOf来包裹,删掉它能让Schema更简洁易懂。

用修改后的Schema验证你给出的示例JSON:

"tx_properties": { 
  "original_msg": "foo", 
  "something_else": "bar", 
  "or_something_numeric": 172, 
  "or_even_deeper_things": { "fungible": false } 
}

完全可以通过验证,既满足了original_msg的必填要求,也允许了各种未知属性的存在。

内容的提问来源于stack exchange,提问作者Frank C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:42:41