Accéder au contenu principal Passer au contenu complémentaire

Import/création de définitions JSON

Lorsque vous créez une structure JSON sans utiliser l'import de schéma JSON, il est important que ce fichier échantillon possède toutes les valeurs possibles des objets et non-objets pouvant apparaître dans des documents d'une instance JSON. Si ce n'est pas le cas, il est possible que vous obteniez des erreurs d'exécution lors du traitement de documents d'une instance JSON car les éléments requis ne seront pas présents dans la structure.

Vous pouvez créer manuellement une structure JSON ou modifier manuellement la structure du JSON importé pour ajouter les éléments manquants, suivez simplement les conventions de cette section.

Types numériques

JSON ne spécifie pas un mécanisme pour déterminer la portée des nombres. Ces nombres doivent être dérivés en observant les valeurs réelles lors de l'import du fichier JSON. L'importateur utilisera le type de données Decimal (Décimal) ou Double lorsqu'il rencontrera un nombre, en fonction de la présence ou non de la valeur e (exposant). Le type Decimal (Décimal) est préféré au type Integer (Entier) car le nombre peut être plus grand qu'un Integer (Entier), ou même 64-bit Long (Long 64 bits). Par ailleurs, il se peut que le nombre possède un composant fractionnel dans les données réelles. Decimal (Décimal) fonctionne toujours dans ce genre de situations. Double est utilisé pour les nombres à virgule flottante, possédant la valeur exposant.

Tableaux

Un tableau JSON apparaît en tant que boucle dans la structure. Tous les autres éléments sont définis comme attendu, dans une hiérarchie fondée sur les objets JSON. Les tableaux JSON présentent les situations suivantes, en fonction des membres possibles :
  • Tous les non-objets avec le même type - Tous les membres d'un tableau sont des non-objets (decimal (nombre décimal), double, string (chaîne de caractères) ou boolean (booléen)) et possèdent le même type (par exemple, les decimals (nombres décimaux) ne sont pas mélangés à des doubles). Dans ce cas, l'élément du tableau se répétera, possédera le type de données correspondant au type de non-objets détecté, et ne sera pas un conteneur.

  • Tous les objets - Tous les membres d'un tableau sont des objets. Cette situation est gérée comme n'importe quelle autre imbrication d'objets.

  • Mélange d'objets et de non-objets - Situation de "mélange" où certains membres du tableau sont des objets et où d'autres membres sont des non-objets. Il est également possible que tous les membres soient des non-objets, mais qu'ils ne possèdent pas le même type (mélange de nombres décimaux et de chaînes de caractères, par exemple).

    Ce cas n'est pas traité comme une boucle, mais plutôt comme une collection spécifique d'objets et de non-objets, comme spécifié dans le tableau. Un élément séparé est créé pour chacun d'entre eux. L'élément membre habituel est créé pour chaque objet. Pour les non-objets, un membre anonyme avec le nom _anonDecimal (remplaçant Decimal (Nombre décimal) par String (Chaîne de caractères), Double ou Boolean (Booléen)) est créé pour chaque type de non-objet présent. Chaque nom d'élément dans le tableau "mélangé" sera suivi de la position de l'élément dans le tableau.

    Note InformationsNote: Pour que le Reader et le Writer JSON SAX puissent lire un tableau mélangé JSON, utilisez le type "choix".

Dates

JSON n'offre pas la possibilité de spécifier qu'une valeur non objet est de type date. Vous pouvez cependant le faire en modifiant simplement le type de données en Date, Date/Time (Date/Heure) ou Time (Heure) dans l'éditeur de structures pour l'élément contenant la date. Vous pouvez également sélectionner le format de données applicable s'il ne s'agit pas du format de date standard ISO 8601. Si vous spécifiez ceci, les dates seront correctement reconnues et donc converties automatiquement lors du mapping.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.