跳转至

JSON 契约总览

CCB 的 JSON 契约不是由一份万能 Schema 定义的。运行时加载器和测试决定行为; DynamicDataLoader 注册决定顶层 type 的分派;Schema、验证器和生成清单记录能够 被机器证明的部分。旧文档和数据样例可以提供线索,但不能覆盖这些契约。

当前机器覆盖

  • JSON 对象类型注册表索引 190 个唯一注册类型和 191 次注册调用。
  • 183 个注册类型在受审计的 6,731 个 tracked JSON 文件中有顶层实例候选。
  • 7 个注册类型没有实例候选;清单没有发现“出现但未注册”的顶层字符串类型。
  • 190 个类型的通用 Schema 状态都是 none;不得把对象类型清单称为完整 JSON Schema。
  • 189 个类型的字段契约仍为 unclassified,effect_on_condition 目前为 partial。

这些数字描述的是提交 71f403ecea0dcf16be8fe93c661acbe2a4906cc6 的生成清单,不保证任意对象的每个字段、 默认值、继承规则或跨 ID 引用都已分类。

一个对象如何获得意义

  1. JSON 解析器先证明文件语法和根容器可读。
  2. 顶层对象的字符串 type 进入注册分派。
  3. 对应 loader/factory 读取字段,并在源码中决定 mandatory、optional、默认值和错误。
  4. factory、finalize/check 阶段以及交叉引用检查可能进一步拒绝对象。
  5. 运行时测试证明具体行为和兼容性。

因此,“在数据中出现过”只说明存在词法实例;“旧文档提到过”也只是 lexical_only 证据。要确认字段,必须回到注册表指出的 loader、测试和验证器。

从哪里开始

如果本页与清单、Schema、注册源码或测试冲突,本页应标记 stale 并修复;不要为了匹配 正文而改变运行时契约。