JSON 与数据处理指南
JSON Schema patternProperties:校验动态键名
为字典对象约束动态键名及值,检查未锚定模式与多个规则同时匹配的情况。
描述字典而非固定字段
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,测试应同时覆盖未知键与错误值。