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

VSCode 1.31.1内置JSON Schema验证仅对数组首个元素生效问题咨询

问题诊断与修复

这个问题不是操作失误,而是你在JSON Schema里对数组items的写法误用了元组验证语法,导致VSCode的JSON验证只处理数组的第一个元素。

问题根源

在你的myschema.json中,foodItems的items字段写成了数组形式:

"items": [ {"$ref": "#/definitions/foodItem"} ]

根据JSON Schema Draft-07的规范,这种数组形式属于元组验证——它指定数组的第N个元素必须匹配数组中第N个schema定义。你这里只定义了第一个元素的schema,后面的元素没有对应的规则,所以VSCode不会对它们进行验证和提示。

而你实际需要的是列表验证:让数组的所有元素都遵循同一个schema规则,这时候items应该是一个对象,而非数组。

修复方案

修改myschema.json中foodItems的items字段,去掉外层的数组括号:

"foodItems": {
  "type": "array",
  "items": {"$ref": "#/definitions/foodItem"}
}

验证效果

修改后重新打开myjson.json,鼠标悬停在Orange、Cherry对应的amount字段上时,都会显示对应的描述文本(比如"The current amount of oranges"),和第一个元素的行为完全一致。

补充说明

如果确实需要元组验证(比如数组第一个元素是字符串、第二个是数字),才会用数组形式的items,例如:

"items": [
  {"type": "string"},
  {"type": "number"}
]

但你的场景是所有数组元素都遵循同一个foodItem规则,所以用对象形式的items才是正确选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:38:35