JSON 与数据处理指南

JSON Schema patternProperties:校验动态键名

为字典对象约束动态键名及值,检查未锚定模式与多个规则同时匹配的情况。

Nav Tools ·

描述字典而非固定字段

patternProperties 把键名模式映射到值约束,适用于键动态变化但有约定前缀的字典。

下面接受以 m_ 开始、后接小写字母的指标名,并要求值为数字。

{"type":"object","patternProperties":{"^m_[a-z]+
quot;:{"type":"number"}},"additionalProperties":false} {"m_latency":12} → valid {"m_latency":"12"} → invalid

锚定完整键名

JSON Schema 模式不会自动锚定,缺少 ^ 与 $ 时,字符串局部命中可能放过额外前缀或后缀。

先在正则工具中验证允许和拒绝的名称,再放入 Schema,同时确认目标实现的正则方言。

多个模式可以同时生效

键名同时命中两个模式时,值必须满足两份约束,并非先匹配的分支获胜。

宽泛的数字前缀规则与更窄的整数规则可同时生效,需要避免互相矛盾的重叠。

名称规则与数量分开约束

条目数量应使用 minProperties 或 maxProperties,patternProperties 本身不要求存在条目,示例允许空对象。

所有键都需统一命名规则时可使用 propertyNames,测试应同时覆盖未知键与错误值。

参考资料

← JSON 与数据处理指南