Altova XMLSpy 2024 Professional Edition

Un objet est contenu dans des accolades et mappe une clé vers une valeur, comme ceci : "MyKey": Value. La clé doit toujours être une chaîne et doit donc toujours être contenue dans des guillemets. La valeur peut être de toute type de données JSON. Chaque paire key:value est connue en tant qu'une propriété de l'objet (voir capture d'écran ci-dessous).

 

Voici un exemple d'un objet instancié comportant trois propriétés :

 

    {

      "emailtype": "home",

      "emailaddress": "contact01.home@altova.com",

      "citycode": 22

    }

 

Le schéma pour l'objet ressemblerait à cela dans le Mode Design :

 

jsonobject01_zoom70

 

Veuillez noter :

 

Chacune des propriétés doit être présente dans l'instance. Cela est indiqué par les bordures pleines des propriétés. Si une propriété est optionnelle, la bordure sera en tirets. Vous pouvez définir si une propriété est requise ou optionnelle dans le menu contextuel de la propriété ou par le biais de l'assistant à la saisie Détails.

L'ordre dans lequel les propriétés doivent avoir lieu dans l'instance n'est pas, et ne peut pas être, défini dans le schéma. Cela signifie que l'ordre dans lequel les propriétés sont définies dans le schéma n'a pas d'importance.

Le carré bleu contenu entre des crochets signifie une propriété (par rapport à une propriété de motif ou un caractère générique de propriété, qui sont tous deux symbolisés par d'autres symboles ; voir ci-dessous).

Le type d'une propriété peut être édité en double-cliquant le type dans le diagramme et en sélectionnant une option depuis la liste déroulante qui apparaît. En alternative, le type peut être sélectionné dans l'assistant à la saisie Détails.

La valeur de contrainte de la propriété emailaddress est définie dans l'assistant à la saisie Contraintes.

 

Propriétés, propriétés de motifs, caractères génériques de propriétés et schémas de noms de propriété

Un objet peut avoir des propriétés, des propriétés de motif, des caractères génériques de propriété et des schémas de nom de propriété (nouveau dans draft-07). Celles-ci peuvent être ajoutées à l'objet par le biais de menus contextuels : (i) de l'objet, (ii) de la fenêtre jaune de propriétés (cliquer avec la touche de droite sur le titre Propriétés de la fenêtre), et (iii) des propriétés individuelles. Les propriétés ont été décrites ci-dessus. Nous allons maintenant nous pencher sur les propriétés de motif et les caractères génériques de propriété.

 

Propriété de motif

Une propriété de motif (capture d'écran ci-dessous) définit le nom de la propriété en tant qu'expression régulière. Dans la capture d'écran ci-dessous, par exemple, l'expression régulière spécifie que la propriété doit : (i) avoir un nom qui commence avec un tiret bas, et (ii) avoir une booléenne en tant que sa valeur. Il n'y a pas de contrainte d'exigence pour une propriété de motif. Vous pouvez ajouter autant de propriétés de motif que vous le souhaitez. Veuillez noter l'icône pour les propriétés de motif.

 

JSONObjectPatternProp01

 

Caratère générique de propriété

Un caractère générique de propriété (capture d'écran ci-dessous) spécifie que tout nombre de propriétés peut se produire en plus des autres propriétés du set de propriétés de l'objet. Néanmoins, le caractère générique peut définir un type pour ces occurrences. La capture d'écran ci-dessous à gauche montre un caractère générique de propriété qui définit des propriétés avec n'importe quel nom mais possédant des valeurs numériques. Il ne peut y avoir qu'un caractère générique de propriété par objet. Si le caractère générique est défini sur le type Tout, néanmoins, vous pourrez définir des contraintes pour chaque type dans l'assistant à la saisie Contraintes. Veuillez noter l'icône pour les caractères génériques de propriété.

 

JSONObjectPropertyWildcard

 

À partir de draft-2019-09 et ultérieur, les caractères génériques de propriété ont un nouveau mot-clé unevaluatedProperties, qui est traité uniquement si le mot-clé additionalProperties manque. Les valeurs de ces deux mots-clé sont produites en définissant des valeurs appropriées pour les entrées Spécifé, S'applique à, et entrées de Type dans l'assistant de saisie Détails du caractère générique (voir la capture d'écran ci-dessous).

jsonschemawildcarddetails_zoom70

Les effets de ces valeurs sur les mots-clés unevaluatedProperties et additionalProperties (et, vice versa, l'effet des mots-clés sur les valeurs d'assistant à la saisie de l'éditeur) sont affichés dans la table ci-dessous. La capture d'écran ci-dessus, par exemple, définit unevaluatedProperties=true.

 

addtionalProperties

unevaluatedProperties

 

Spécifié

S'applique à

Type

--

--

<=>

false

Tous

Sans contrainte

true

ignoré

<=>

true

Tous

Sans contrainte

false

ignoré

<=>

--

--

--

Schéma

ignoré

<=>

true

Tous

Type de schéma

--

true

<=>

true

Non évalué

Sans contrainte

--

false

<=>

true

Non évalué

Interdit

--

Schéma

<=>

true

Non évalué

Type de schéma

 

Veuillez noter les points suivants :

 

Si addtionalProperties et unevaluatedProperties sont présents, alors unevaluatedProperties is est ignoré.

Spécifié=false ne fonctionne qu'avec Scope=Tous et Type=Sans contrainte.

 

Schéma de noms de propriété

Un schéma de noms de propriété (capture d'écran ci-dessous) limite les noms des propriétés de cet objet. (Cette fonction est nouvelle dans nouveauté dans draft-07.) Par exemple, dans la capture d'écran ci-dessous, nous pouvons voir que les noms des propriétés doivent être des strings. De plus, nous pouvons spécifier des limites supplémentaires pour le nom de la propriété par le biais de l'assistant à la saisir Contraintes : par exemple, que le nom de la propriété s'inscrit dans une plage de longueur de caractère bien définie ou qu'il possède un certain motif.

 

JSONObjectPropertyNamesSchema

 

Note :il n'existe pas de paramètres d'occurrence minimum ou maximum pour une propriété de motif ou un caractère générique de propriété. Voir la section concernant la validation de propriété pour comprendre le fonctionnement.

 

Comment sont validées les propriétés

Lorsqu'une propriété est rencontrée dans l'instance, elle est validée comme suit :

 

1.Le nom de la propriété est contrôlé dans le schéma par rapport à toutes les propriétés nommées de cet objet.

2.Si aucune correspondance n'est trouvée, le nom est contrôlé par rapport à toutes les propriétés de motif contenues dans l'ensemble de propriété de l'objet.

3.Si aucune concordance n'est toujours pas trouvée, le caractère générique est invoqué s'il existe.

4.Si aucune concordance n'est toujours pas trouvée pour le nom, une erreur de validité est rapportée. Si le nom correspond à celui d'une propriété ou d'une propriété de motif, ou si un caractère générique existe, alors la valeur est contrôlée par rapport à la valeur de la définition de la propriété correspondante.

5.Si l'instance de la valeur correspond au type et aux contraintes de la définition de propriété correspondante, la propriété est valide. Sinon elle est invalide.

 

Exemple

La capture d'écran ci-dessous définit un objet qui :

 

doit avoir trois propriétés nommées emailtype, emailaddress, et citycode  

peut avoir une ou plusieurs propriétés avec un nom qui commence avec un tiret bas et une valeur qui est booléenne (voir la propriété de motif dans la capture d'écran ci-dessous)

peut avoir une ou plusieurs propriétés avec n'importe quel nom et valeur

jsonobjectexample_zoom70

 

© 2017-2023 Altova GmbH