Wie man ein json-schema aus einer anderen Datei?

Möchte ich wissen, wie man ein json-schema aus einer anderen Datei.

Angenommen ich habe zwei Dateien im selben Verzeichnis abgelegt:

Datei 1: person.json

{
    "id":"#person",
    "name": {"type":"string"},
    "age": {"type":"number"},
    "address": {
        "type":"object",
        "properties": {
            "number": {"type":"number"},
            "street": {"type":"string"},
            "city": {"type":"string"}
        }
    }
}

Datei 2: Gesellschaft.json

{
    "id":"#company",
    "name": {"type":"string"},
    "employees": {
        "type":"array",
        "items" {"$ref":"person.json"}
    }
}

Als Sie beobachten können, "Mitarbeiter" soll ein array "person". Das problem ist, ich weiß nicht, wie auf den "person" - schema, weil es in einer anderen Datei.

Ich bin mir bewusst, dass dies vielleicht eine einfache Frage, und dass es vielleicht schon Antworten, aber ich habe schon recherchiert viel und ich verstehe nicht, wie das gemacht wird.

BEARBEITEN 1

Ich bin mit Kleine Validator-4 (tv4) für die schema-Validierung. Ich bin auch mit QUnit testen, ob die Schemata arbeiten, wie Sie sollten.

Unten zeige ich Ihnen einen test, wo die Adresse ist boolean, wenn es sollte vom Typ Zahl. Das schema validiert, wenn es nicht sollte.

asyncTest("invalid type for adress number", function() {
    expect(1);
    var jsonObject = {
        name: 'Computers Inc',
        employees: [
            {
                name: 'John',
                age: 29,
                address: {
                    number: 9,
                    street: 'Oak Street',
                    city: 'London'
                }
            },
            {
                name: 'Mike',
                age: 35,
                address: {
                    number: true,
                    street: 'Big Avenue',
                    city: 'London'
                }
            }
        ]
    };

    //Gets the JSON Schema
    $.getJSON('json_schemas/company.json', function(response) {
        var jsonSchema = response;
        console.log(jsonSchema);

        //Verifies the validity of the JSON object
        var valid = tv4.validate(jsonObject, jsonSchema);
        ok(!valid, "Not valid because Mike's number is a boolean.");
        start();
    });
});

Nach einem Blick auf es für eine Weile, ich denke, es ist der "$.getJSON" wer bringt ihn bis. Die "Konsole.log(jsonSchema)" zeigt an, dass dem aktuellen schema nicht die person Teil. Die holte schema ist genau der, von der "Gesellschaft.json" - Datei.

EDIT 2

Ich denke, es ist wie dieser. 🙂

asyncTest("invalid type for address number", function() {
    expect(1);
    var jsonObject = {
        name: 'Computers Inc',
        employees: [
            {
                name: 'John',
                age: 29,
                address: {
                    number: 9,
                    street: 'Oak Street',
                    city: 'London'
                }
            },
            {
                name: 'Mike',
                age: 35,
                address: {
                    number: false,
                    street: 'Big Avenue',
                    city: 'London'
                }
            }
        ]
    };

    tv4.asyncValidate(jsonObject, 'json_schemas/company.json', function(valid) {
        ok(!valid, printMessage(valid));
        start();
    });
});
  • Das was du da hast sieht aus wie es funktionieren sollte. Welche problem sehen Sie?
  • Danke für deine Antwort @cloudfeet. Ich fügte einige weitere details in den EDIT-1. Es scheint ein problem mit dem abrufen des Schemas für die Validierung. Würden Sie bitte schauen Sie es? Nochmals vielen Dank. 😉
InformationsquelleAutor joaorodr84 | 2014-05-08
Schreibe einen Kommentar