Sélecteurs de type (Any, Multiple)
Dans les listes déroulantes des listes de choix Types que vous trouverez dans le Mode JSON Schema, il y a quatre "types" qui ne sont pas des types JSON : any, multiple, unconstrained et forbidden. Il s'agit en fait de sélecteurs de type.
•Le sélecteur de type any sélectionne tout type JSON. Cela signifie que, dans l'instance, tout type JSON sera valide pour cette définition particulière.
•Le sélecteur de type multiple sélectionne un ou plusieurs types JSON. Cela signifie que si le type d'instance est un des types JSON sélectionné dans le schéma, le type d'instance sera valide pour cette définition particulière.
•Le sélecteur de type unconstrained (nouveau dans draft-06) ne définit pas de contrainte dans le type JSON. Cela signifie que, dans l'instance, tout type JSON sera valide pour une définition avec ce nom.
•Le sélecteur de type forbidden (nouveau dans draft-06) interdit tout type JSON, ne permettant ainsi pas l'existence d'une définition portant ce nom.
Le sélecteur de type any
Le type de sélecteur any peut être sélectionné dans tous les endroits où il est possible de sélectionner un type. Lorsqu'une définition est ajoutée au schéma, any est la sélection de type par défaut. Elle spécifie que l'un des types JSON est valide. Cela signifie que le type d'instance peut validement être un objet, un tableau, ou un des types atomiques (string, number, integer, boolean, et null).
Dans la capture d'écran ci-dessus, le sous-schéma a un type de Any. Donc, tous les types JSON sont valides pour cette définition. Les éléments suivants sont implicites et sont mis en place conformément à la UI :
•Puisque les objets sont autorisés, une fenêtre propriétés est créée automatiquement (voir capture d'écran ci-dessus). La fenêtre propriétés est définie par défaut pour autoriser toute quantité de propriétés de tout type (par le biais d'un caractère générique de propriété avec un type de Any). Vous pouvez modifier les définitions de propriété comme vous le souhaitez.
•Puisque des tableaux sont autorisés, une fenêtre d'item est créée automatiquement (voir capture d'écran ci-dessus). La fenêtre d'items de tableau est définie par défaut pour autoriser tout nombre d'items de tableau de tout type (par le biais d'un caractère générique d'item de tableau avec un type de Any). Vous pouvez modifier les définitions d'items comme vous le souhaitez.
•Puisque les types string et numeric (nombre et entier) sont autorisés, les contraintes pour ces types atomiques peuvent être définis dans l'assistant à la saisie Contraintes.
C'est pourquoi tous ces types sont définis de manière implicite avec le sélecteur de type Any. Afin de changer le type en un type spécifique, sélectionner ce type. Il existe un moyen alternatif de spécifier des objets et des tableaux en tant que type : cliquer avec la touche de droite sur l'objet ou le tableau et sélectionner Rendre explicite. Cela fait de ce type le type sélectionné et supprime les autres types ou rend les types d'objet/tableau définis inactifs.
Le sélecteur de type multiple
Le sélecteur de type multiple peut être sélectionné partout où un type peut être sélectionné. Il vous permet de sélectionner un ou plusieurs types JSON en contrôlant les types que vous souhaitez autoriser (voir capture d'écran ci-dessous). Vous pouvez ensuite spécifier les contraintes pour les types sélectionnés dans l'assistant à la saisie Contraintes.
Dans la capture d'écran ci-dessus, le sous-schéma permet des types de string, null, et array. Les contraintes pour ces types peuvent être définies dans l'assistant à la saisie Contraintes (voir capture d'écran).
•Les contraintes de chaîne sont définies dans l'assistant à la saisie Contraintes.
•Le type null ne prend plus d'autres contraintes.
•Une fenêtre d'items de tableau est créée automatiquement. Vous pouvez définir le nombre et les types des items de tableau autorisés.
Dans un document d'instance, les types sélectionnés seront autorisés à l'endroit correspondant à celui du sous-schéma.
Les sélecteurs de types unconstrained et forbidden
Les sélecteurs de type unconstrained et forbidden peuvent être sélectionnés partout où un type peut être sélectionné. Ils vous permettent de spécifier, respectivement, qu'un objet de tout type est autorisé ou bien qu'aucun objet de ce nom n'est autorisé.
Dans la capture d'écran ci-dessus, une définition a deux propriétés. PropertyOne peut avoir une valeur de tout type, alors qu'aucune propriété nommée PropertyTwo n'est autorisée (voir capture d'écran). Dans sa forme de texte, cette structure ressemblera à l'extrait de code ci-dessous.
"Definition": {
"properties": {
"PropertyOne": true,
"PropertyTwo": false
}
}