2017-09-01 3 views
0

Ich habe unter Beispielschema. Ich muss sicherstellen, dass mindestens ein Vorkommen von "Name": "Dies ist obligatorisch" in der JSON-DateiValidierung obligatorische String-Werte in JSON-Schema

Ist es möglich, dies zu erreichen? Freundlich helfen.

"SchemaList": { 
     "type": "array",  
     "additionalItems": false, 
     "items": { "$ref": "#/definitions/Schema1" }   
     }, 
    "Schema1": { 
     "type": "object",   
     "properties": { 
     "description": { "type": "string" }, 
     "name": { "type": "string" }   
      } 
     } 

Antwort

0

Der letzte Entwurf (Draft 6) stellt ein neues Schlüsselwort "contains", mit dem Sie, dass ein bestimmtes Schema sollte mindestens übereinstimmen ausdrücken kann man Element im Array. Sie können es auf diese Weise verwenden:

{ 
    "SchemaList": { 
     "additionalItems": false, 
     "contains": { 
      "properties": { 
       "name": { 
        "const": "This is Mandatory" 
       } 
      }, 
      "required": [ 
       "name" 
      ] 
     }, 
     "items": { 
      "$ref": "#/definitions/Schema1" 
     }, 
     "type": "array" 
    } 
} 

Aber bedenken Sie, dass the latest draft version of json-schema has only a very few implementations, so auf der Bibliothek ab, die Sie verwenden, die "contains" Schlüsselwort möglicherweise nicht.

+0

Vielen Dank @erosb Dies ist genau das, was ich gesucht habe. Ich habe früher "contains" versucht, aber habe nicht erkannt, dass es von v6 gültig ist. Übrigens, ich benutze dies in Swagger 2.0 (die V4 verwendet). Wie auch immer, das ist sehr hilfreich. Eine gute Zeit haben :) –

0

Bitte lesen Sie diesen Link für weitere Informationen: http://json-schema.org/example1.html

{ 
"SchemaList": { 
    "type": "array", 
    "additionalItems": false, 
    "items": { 
     "$ref": "#/definitions/Schema1" 
    } 
}, 
"Schema1": { 
    "type": "object", 
    "properties": { 
     "description": { 
      "type": "string" 
     }, 
     "name": { 
      "type": "string" 
     } 
    } 
}, 
"required": ["name"] 
} 
+0

In dem obigen Beispiel ist es zwingend erforderlich, "name" zu deklarieren, aber es kann den Wert von name nicht erzwingen. Ich kann enum nicht verwenden, weil ich dynamische Werte für Name benötige und es sollte Mandat: "ThisIsMandatory" mindestens einmal auftreten. Um klarer zu sein, muss ich den Wert des Namens validieren. –

+0

Sie versuchen, den Namen Wert zu bekommen und etwas damit zu tun? –

Verwandte Themen