2017-09-24 4 views
1

Ich versuche, die Definitionen von einem anderen json Schema mit $ref aber immer den folgenden Fehler zu importieren:Wie verwendet man Definitionen aus externen Dateien in JSON Schema?

can't resolve reference ../base/definitions.schema.json#/definitions/datetime from id #

 
{ 
    "$schema": "http://json-schema.org/draft-06/schema#", 

    "definitions": { 
    "datetime": { 
     "type": "string" 
    }, 
    "name": { 
     "type": "string" 
    }, 
    } 
} 

 
{ 
    "$schema": "http://json-schema.org/draft-06/schema#", 
    "properties": { 
    "active": {"type": "boolean"}, 
    "created_at": { "$ref": "../base/definitions.schema.json#/definitions/datetime" }, 
    "name": { "$ref": "../base/base/definitions.schema.json#/definitions/name" }, 
    "updated_at": { "$ref": "../base/definitions.schema.json#/definitions/datetime" } 
    }, 
    "required": ["name"], 
    "type": "object" 
} 

Verzeichnisstruktur:

 
api 
-- base 
    -- definitions.schema.json 
-- country 
    -- country.schema.json 

I habe mehrere Kombinationen mit einem absoluten Pfad ausprobiert , eine file URL und mehrere andere Kombinationen des Pfades. Nicht sicher, was vor sich geht.

Schema-Validator: [email protected]

Antwort

1

Sie müssen Schemata hinzufügen "addSchema" Methode. $ ref wird relativ zum Attribut "id" aufgelöst ("$ id" in Entwurf-06), ajv verwendet keine Dateipfade (und kann diese auch nicht).

BEARBEITEN: hinzugefügt $ ref Abschnitt zu docs.

+0

Aber nach [this] (https://spacetelescope.github.io/understanding-json-schema/structuring.html#reuse) sollte ich in der Lage sein, einen Pfad zu $ ​​ref hinzuzufügen. Siehe hierzu: '$ ref kann auch ein relativer oder absoluter URI sein, also wenn Sie es vorziehen, Ihre Definitionen in separate Dateien aufzunehmen, können Sie das auch tun. – Sayem

+1

Sie können Pfade verwenden, wie ich geschrieben habe, sie werden mit der Basis aufgelöst URI im ID (oder $ ID) -Attribut. – esp

+0

Ich bin ein bisschen verwirrt. Meinst du, ich muss den Pfad im '$ id' Attribut definieren? Was passiert, wenn die Definitionen in mehreren Dateien enthalten sind? Könnten Sie bitte ein Beispiel geben? – Sayem

Verwandte Themen