4

以下は、検証のためにコンパイルして使用しようとしている JSON スキーマの例です。これを達成するために、'ajv' npm モジュールを使用しています。

これが私が実行しているコードです...

var ajv = require('ajv')();

var contactSchema = {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Contact",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "work": { "$ref": "#definitions/phone" },
        "home": { "$ref": "#definitions/phone" },
    },
    "definitions": {
        "phone": {
            "type": "object",
            "required": ["number"],
            "properties": {
                "number": { "type": "string" },
                "extension": { "type": "string" }
            }
        }
    }
};

var validator = ajv.compile(contactSchema);

このコードを実行すると、次の例外が発生します..

Error: can't resolve reference #definitions/phone from id #

他の誰かがこの種の問題に遭遇しましたか? 私が間違っているかもしれないことは何ですか?

4

1 に答える 1

3

あなたの参照は正しくありません (有効ですが)、#/definitions/phone である必要があります

"id": "#definitions/phone"または、機能させるためにphone スキーマ内に追加することもできますが、使用する方が一般的です"id": "#phone"(そして $refs も更新します)。

于 2016-10-28T15:41:02.293 に答える