So definieren Sie eine JSON-schema, das ist zumindest eine von vielen Eigenschaften

Ich würde gerne wissen, ob ich es definieren kann, ein JSON-schema (draft 4), erfordert zumindest eine von vielen Eigenschaften kann ein Objekt. Ich weiß schon, der allOf, anyOf und oneOf aber kann nicht herausfinden, wie man Sie in der Art, wie ich will.

Hier sind einige Beispiel-JSON zu veranschaulichen :

//Test Data 1 - Should pass
{

    "email": "[email protected]",
    "name": "John Doe"
}
//Test Data 2 - Should pass
{
    "id": 1,
    "name": "Jane Doe"
}
//Test Data 3 - Should pass
{
    "id": 1,
    "email": "[email protected]",
    "name": "John Smith"
}
//Test Data 4 - Should fail, invalid email
{
    "id": 1,
    "email": "thisIsNotAnEmail",
    "name": "John Smith"
}

//Test Data 5 - Should fail, missing one of required properties
{
    "name": "John Doe"
}

Ich möchte, benötigen Sie mindestens id oder email (akzeptieren auch beide) und noch Gültigkeitsprüfung nach format. Mit oneOf Validierung fehlschlägt, wenn ich die beiden (test 3), anyOf Validierung weiterleitet, auch wenn einer von Ihnen ist nicht gültig (test 4)

Hier ist mein schema :

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://example.com",
    "properties": {
        "name": {
            "type": "string"
        }
    },
    "anyOf": [
        {
            "properties": {
                "email": {
                    "type": "string",
                    "format": "email"
                }
            }
        },
        {
            "properties": {
                "id": {
                    "type": "integer"
                }
            }
        }
    ]
}

Können Sie mir helfen, wie das zu erreichen ist die richtige Validierung für meinen Anwendungsfall ?

InformationsquelleAutor MaxiWheat | 2015-08-05
Schreibe einen Kommentar