如何用JSONSchema适配键动态生成、值均为字符串的JSON元数据?
如何用JSON Schema处理含动态键的meta对象?
刚好之前处理过类似的场景,这种动态生成字段的需求,JSON Schema的additionalProperties关键字就是专门干这个的!
核心思路是:先定义好你能确定的固定字段(比如filename),然后对meta这个动态字段,明确它是一个对象,并且允许任意数量的字符串键,对应的值必须是字符串类型。
给你一个完整的Schema示例:
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": ["filename", "meta"], "properties": { "filename": { "type": "string" }, "meta": { "type": "object", "additionalProperties": { "type": "string" } } } }
我给你拆解一下关键部分:
required数组:确保filename和meta这两个字段必须存在,如果你允许meta可选,可以把它从数组里去掉。meta的定义:type: object指定它是一个对象,而additionalProperties: { type: "string" }表示这个对象里可以有任意名称的键,且所有键对应的值都必须是字符串——完美匹配你描述的动态元数据场景。
举个验证例子:你提供的示例JSON
{ "filename": "hello.txt", "meta": { "some file property": "any string", "some other file property": "another string" } }
会被这个Schema完全通过验证;但如果meta里出现比如"size": 123(数值类型),就会被判定为无效,完全符合你的需求。
内容的提问来源于stack exchange,提问作者wolfson109
相关产品推荐
相关产品推荐

