ajvを使ってJSONのバリデーションをするときに $ref を使用する場合
ajv を使用すると JSON Schema を基に JSON のバリデーションを行うことができます。
https://github.com/epoberezkin/ajv
JSON Schema で ref を使っている場合は、addSchema でスキーマを繋ぐ必要があります。
例えば、以下のようなスキーマを定義したとします。
const usersSchema = {
$id: "http://example.com/schemas/users.json",
type: 'array',
items: {
$ref: "defs.json#/definitions/User"
}
}
const defsSchema = {
$id: "http://example.com/schemas/defs.json",
definitions: {
User: {
required: ["id", "name", "age", "desc"],
type: "object",
properties: {
id: {
"type": "integer"
},
name: {
"type": "string"
},
age: {
"type": "number"
},
desc: {
"type": "string",
"maxLength": 15
}
}
}
},
}
usersSchema が今回使用するスキーマです。
defsSchema は definitions で User を定義しており、usersSchema から $ref で利用されています。
ajv では $id を使って参照を行うようなので、上記のように $id を指定する必要があるようです。
https://github.com/epoberezkin/ajv/blob/master/docs/validation.md#combining-schemas-with-ref
今回の場合は以下のようになります。
const ajv = new Ajv.default()
const validate = ajv.addSchema(defsSchema).compile(usersSchema)
最近のコメント