数组元素的对象规则应放在 items 内
理解重命名字段为何能通过数组 Schema,再将对象规则移入 items,并保留完整诊断。
数组元素的对象规则应放在 items 内
把 properties 和 required 放在 type: array 旁边,并不会约束每个数组元素。来源问题正是重命名字段后实例仍通过的例子。把对象规则移入 items,再测试缺少字段的实例。原帖样本里的重复键和尾逗号须先透明修正,才能作为单独回放,不能称原文直接通过。
检验完整流程
若想约束数组元素,把对象规则放在 items 内;修正语法或不支持的约束后重试。通过表示该实例符合所支持的自备 Schema。
- 确认要求约束的是数组本身,还是其中每个对象。
- 把逐对象规则放到 items 内,用缺少必需字段的元素检查规则。
- 原帖与经过透明修正的单独回放分开保留。
- 查看完整诊断;规则放置提示不会改写自备 Schema。
检查规则意图,而不只检查 JSON 语法
格式化与样本类型推断解决不同问题。自备 Schema 校验只求值实际提供的规则,不会推断 API 负责人的要求;与 type: array 并列的 properties 和 required 只产生放置提示,不会自动改写约束。
| 放置位置 | 对数组实例的作用 |
|---|---|
| type: array | 检查容器类型 |
| 与 type: array 并列的 properties / required | 不会把对象规则应用到每个数组元素 |
| items 内的对象 properties / required | 把自备对象规则应用到每个元素 |
{"type":"array","items":{"type":"object","properties":{"a":{"type":"string"}},"required":["a"]}}求值路径不是解析后的源指针
完整报告为每条保留诊断记录实例位置、关键词、求值路径和技术原文;本地引用可在求值路径中加入转换。应保留重复的父级与叶子条目,合并为一行会丢失报告依据。
参考资料
- 自备 Schema 与重命名字段问题
完整演示是单独的规范化回放:解码后重复键按最后值处理,并移除尾逗号;未改动原帖会被拒绝。按作者意图将数组规则移入 items。
- JSON Schema Draft 2020-12
背景规范;受支持的静态范围更窄,不声称完整符合性。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
用自备 Schema 校验 JSON 实例检查自备 Draft 2020-12 约束,定位受支持规则的全部失败并保存完整报告。
检查自备 Draft 2020-12 约束,定位受支持规则的全部失败并保存完整报告。
操作步骤
- 分别提供 JSON 实例和权威 Schema。
- 为每个角色选择有效来源模式;选择文件时只显示元信息,点击运行后读取并处理。
- 执行校验,区分输入或 Schema 范围被拒绝,与已完成校验但实例无效。
- 查看实例指针和 Schema 求值路径,下载 validation-report.json 或复制完整报告。
能力与限制
- 实例最多 1 MiB、50,000 值节点和 64 层;Schema 最多 128 KiB、5,000 节点、32 层和 1,000 个 Schema 位置。根节点深度为零。
- 固定 Draft 2020-12 静态子集:类型、const/enum、必填与依赖、属性与数组、数值与字符串约束、组合规则,以及无环的同文档 JSON Pointer 引用。未知或不支持的关键词会中止任务。
- 所有 JSON 数值原文的数学值须为整数,且位于 ±9,007,199,254,740,991 内。1.00 等精确整数写法可用;小数和发生不安全舍入的数值被拒绝。
- 平面 ECMA262-u 模式最多 128 个 UTF-8 字节,支持字面字符、字符类、锚点、点号和简单量词。拒绝分组、选择、反向引用及 f/n/r/t/v 之外的字母简写转义;不获取远程引用,不支持 anchor、动态引用、unevaluated、format 或自定义代码。
- 不支持的词汇表/content 关键词、$anchor/$dynamicAnchor/$dynamicRef、unevaluated、format、嵌套 $id、远程或百分号/锚点引用,以及递归本地引用都会拒绝任务;此静态范围不表示完整 Draft 2020-12 符合性。
- 验证与深比较合计最多 2,000,000 次调用;尝试生成的不同诊断最多 20,000 条,其紧凑内容合计最多 8 MiB。完整报告最多 8 MiB。超出任一限制会拒绝全部结果。
- Schema 位置的 JSON Pointer 路径累计最多 8 MiB;构造路径前检查位置数量与路径字节。语法有效但超过预处理容量的 Schema 会整体拒绝。
- 每个角色选择粘贴内容或恰好一份 UTF-8 文件;改用粘贴时先清除所选文件。空文件或无效文件不会回退到隐藏的粘贴内容。文件名标签最多 512 个 UTF-8 字节。
- 移除并记录一个开头 BOM,粘贴输入亦如此。拒绝无效 UTF-8、解码后重复的 JSON 键和不成对的 Unicode 代理字符;输入在本浏览器处理。
- 整个任务固定 10 秒时限或取消后不提供部分制品。修正输入后重试,每次任务使用新 Worker。
- 完整报告保留每条诊断,包括父级包装诊断与重复的四字段条目。keywordLocation 是包含本地引用转换的求值路径,并非解析后的绝对源指针;技术错误原文保持不变。
- 文件内容仅在点击运行后读取,与引擎加载、检查和处理共用固定的整个 10 秒任务期。取消或超过任一上限时,不发布部分复制或下载;输入仅留在当前标签页的有界内存中。
- 屏幕采用有界预览;完整复制和下载保留全部诊断、有序匹配项与来源身份。文件与名称在本地处理,不上传内容,不抓取远程引用。