|
|
|
|
|
- Propriétés spécifiques à la description des variables de type JSONXMLConvertisseur
- Norme de conversion JSON vers XML et XML vers JSON
- Norme de conversion par défaut
- Cas particuliers de conversion
- Fonctions WLangage manipulant le type JSONXMLConvertisseur
JSONXMLConvertisseur (Type de variable) En anglais : JSONXMLConverter
Le type JSONXMLConvertisseur permet de définir toutes les caractéristiques avancées de la conversion d'un objet XML ou JSON (ou inversement) réalisée via les fonctions XMLVersJSON et JSONVersXML). Les caractéristiques de cette conversion peuvent être définies et modifiées à l'aide de différentes propriétés WLangage. Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable. soit json = ChaîneVersJSON(" { "nom" : "TestName"  ,"id" : 2  ,"vrai" : true  ,"liste" : [5,5,6,2,47] } ")  soit convertisseur est un JSONXMLConvertisseur convertisseur.ConversionTableauAvecRacine = Faux convertisseur.ConversionComplète = Vrai soit xml = JSONVersXML(json, convertisseur) Trace(xml..SourceXML)  // Le résultat affiché sera // <document> //  <nom>TestName</nom> //  <id>2</id> //  <vrai>true</vrai> //  <liste>5</liste> //  <liste>5</liste> //  <liste>6</liste> //  <liste>2</liste> //  <liste>47</liste> // </document>  Trace(XMLVersJSON(xml, convertisseur))  // le résultat affiché sera: // { "nom":"TestName", "id":2, "vrai":true, "liste":[ 5, 5, 6, 2, 47 ] }
Remarques Propriétés spécifiques à la description des variables de type JSONXMLConvertisseur Les propriétés suivantes peuvent être utilisées pour manipuler un convertisseur : | | | Nom de la propriété | Type manipulé | Effet |
---|
ConversionComplète | Booléen | - Vrai (valeur par défaut) si la conversion doit prendre en compte les attributs et les namespace,
- Faux pour effectuer une conversion simple (sans prendre en compte les attributs et les namespace).
| ConversionTableauAvecRacine | Booléen | - Vrai (valeur par défaut) pour convertir les tableaux JSON en tableaux XML en utilisant le nom de l'élément JSON comme nom de racine,
- Faux dans le cas contraire.
| NomElément | Chaîne de caractères | Nom des éléments pour les tableaux avec racine. | NomRacineXML | Chaîne de caractères | Nom de la racine XML. Par défaut, cette propriété correspond à "root". | PréfixeAttribut | Chaîne de caractères | Préfixe des attributs XML en JSON. Par défaut, cette propriété correspond à "@". | PréfixeCDATA | Chaîne de caractères | Clé des sections d'échappements XML. Par défaut, cette propriété correspond à "CDATA". | PréfixeNamespaceDéclaré | Chaîne de caractères | Préfixe pour les namespaces déclarés. Par défaut, cette propriété correspond à "%". | PréfixeNamespaceNoeud | Chaîne de caractères | Préfixe pour le namespace du noeud. Par défaut, cette propriété correspond à "$". | PréfixeTexte | Chaîne de caractères | Préfixe des textes des noeuds texte XML en JSON. Par défaut, cette propriété correspond à  "#texte".
| ReprésentationBaliseVide | Booléen | - Vrai (valeur par défaut) si la balise vide est représentée par NULL,
- Faux dans le cas contraire.
| TypageJSON | Booléen | - Vrai (valeur par défaut) si les types sont déduits lors de la conversion vers JSON,
- Faux dans le cas contraire.
|
Remarques Norme de conversion JSON vers XML et XML vers JSON Il n'existe pas de normes précises de conversion dans un sens ou dans l'autre. Cependant, afin de définir au mieux les opérations de conversion, deux méthodes sont disponibles : - Imposer une norme lors de la conversion (en utilisant les valeurs par défaut de la variable JSONXMLConvertisseur).
- Utiliser une norme de conversion personnalisée en utilisant une variable de type JSONXMLConvertisseur afin de décrire les règles de conversion.
Norme de conversion par défaut Conversion XML Vers JSON - Balise XML : "" + nom de la balise suivi d'un objet JSON.
- Balise vide : valeur null JSON.
- Attribut XML : "@" + nom de l'attribut en membre JSON de l'objet représentant la balise.
- Nœud texte : simple paire clé / valeur s'il n'y a pas d'attributs, "#texte" si le nœud est un objet JSON.
- Sections d'échappement : "CDATA" avec la chaîne en valeur JSON.
Conversion JSON Vers XML - Objet vide : balise vide si l'objet est nommé.
- Liste vide : balise vide si le tableau est nommé.
- Valeur : noeud texte.
Cas particuliers de conversion La conversion JSON - XML n'est pas une conversion triviale et sans perte puisque les deux langages présentent des syntaxes et des données différentes. Toute conversion de l'un vers l'autre devra forcément faire des concessions pour permettre de retrouver les données en limitant les pertes depuis le document d'origine. Voici une liste des différents points de conflit et ambiguïtés qui peuvent se produire durant une conversion, ainsi que des propositions de résolution permettant une translation inverse si possible sans compromettre les données des objets. Conversion XML Vers JSON - Attribut XML : La syntaxe JSON ne possède pas d'attributs pour les couples clés-valeurs. Pour conserver la notion d'attributs, une solution est de préfixer ceux-ci dans le contenu JSON et de les placer en tant que membres de l'objet.
- Namespace : La syntaxe JSON ne possède pas de namespace pour les clés. Une solution simple est de les considérer en tant que noms et attributs classiques.
- Balise vide : La syntaxe JSON n'offre pas la possibilité d'avoir des clés sans aucune valeur. Deux possibilités sont disponibles : les représenter par la valeur null ou par un objet vide (dans le cas d'une balise vide avec attributs, la seule représentation possible est l'objet pseudo-vide, ne contenant que les attributs de la balise).
- Noeud texte : Les noeuds texte sont représentables sous formes de couple clé-valeur mais la présence des attributs peut amener à la création d'un objet en tant que valeur de la clé représentant le noeud. Afin de garder une référence sur la valeur textuelle du noeud, une solution est de créer un couple interne contenant le texte du noeud.
- Liste de noeuds : Les listes XML sont transposables en JSON facilement mais puisqu'il n'est pas possible de dupliquer des clés JSON, il risque d'y avoir une perte de l'ordonnancement des noeuds fils dans certains cas.
- Sections d'échappement : Le JSON ne possède pas la notion de sections d'échappement mais il est possible de les stocker sous forme de champs spéciaux dans le contenu JSON cible, à la manière des noeuds texte.
- Commentaires : Le JSON n'a pas la notion de commentaires. La solution est de ne simplement pas les copier dans le contenu JSON cible puisqu'ils sont optionnels.
Conversion JSON Vers XML - Type des valeurs : Les documents XML ne possèdent pas de notions de type. Il faut considérer qu'ils seront perdus, ou alors leurs types d'origine doivent être stockés dans le XML généré.
- Liste vide : Le XML n'a techniquement pas de listes vides. Les considérer comme des balises vides présente un risque de conflit avec les objets vides et / ou null.
- Objet vide / null : La balise vide XML permet de représenter ces notions JSON mais pour permettre la conversion inverse, il est nécessaire de choisir une des deux représentations.
Fonctions WLangage manipulant le type JSONXMLConvertisseur | | JSONVersXML | Convertit une chaîne de caractères au format JSON en une chaîne de caractères au format XML. | XMLVersJSON | Convertit une chaîne de caractères au format XML en une chaîne de caractères au format JSON. |
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|