JSON Schema 用来描述 JSON 格式的数据,用一种协议规范的格式描述一组模式,以此视作数据的格式,来校验数据是否符合要求。
我想要设计一个列表格式,每个列表项目是若干类之一,根据类的不同,其具体格式要求也不同。
例如列表项目可能是下列其中之一:
- $ref: "#/definitions/node"
- $ref: "#/definitions/edge"
- $ref: "#/definitions/include"
但逻辑上保证,任意一个项目不可能满足上述列表里的多个格式,即数据类是互斥的。上述的项目都至少满足:
type: object
properties:
cmd: {
type: string}
即都存在一个名叫 cmd
的字符串类型字段,它也就是这个数据项目归类的列表。不同类之间的 cmd
绝不会相同。
于是我可以用 items
设定每一项的格式,再用 anyOf
做逻辑组合。
type: array
items:
anyOf:
- $ref: "#/definitions/node"
- $ref: "#/definitions/edge"</