Neatbo.

数组元素的对象规则应放在 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 约束,定位受支持规则的全部失败并保存完整报告。

操作步骤

  1. 分别提供 JSON 实例和权威 Schema。
  2. 为每个角色选择有效来源模式;选择文件时只显示元信息,点击运行后读取并处理。
  3. 执行校验,区分输入或 Schema 范围被拒绝,与已完成校验但实例无效。
  4. 查看实例指针和 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 秒任务期。取消或超过任一上限时,不发布部分复制或下载;输入仅留在当前标签页的有界内存中。
  • 屏幕采用有界预览;完整复制和下载保留全部诊断、有序匹配项与来源身份。文件与名称在本地处理,不上传内容,不抓取远程引用。
打开用自备 Schema 校验 JSON 实例 →