PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


Nouveauté WINDEV et WEBDEV 27 !
  • 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
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.
Exemple
soit json = ChaîneVersJSON("
{ "nom" : "TestName"
 ,"id" : 2
 ,"vrai" : True
 ,"liste" : [5,5,6,2,47]
}
")
 
soit convertisseur est un JSONXMLConvertisseur
convertisseur.ConversionTableauAvecRacine = Faux
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èresNom des éléments pour les tableaux avec racine.
NomRacineXML Chaîne de caractèresNom de la racine XML. Par défaut, cette propriété correspond à "root".
PréfixeAttribut Chaîne de caractèresPréfixe des attributs XML en JSON. Par défaut, cette propriété correspond à "@".
PréfixeCDATA Chaîne de caractèresClé des sections d'échappements XML. Par défaut, cette propriété correspond à "CDATA".
PréfixeNamespaceDéclaré Chaîne de caractèresPréfixe pour les namespaces déclarés. Par défaut, cette propriété correspond à "%".
PréfixeNamespaceNoeud Chaîne de caractèresPréfixe pour le namespace du noeud. Par défaut, cette propriété correspond à "$".
PréfixeTexte Chaîne de caractèresPré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 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 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 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

Versions 27 et supérieures
JSONVersXML
Nouveauté 27
JSONVersXML
JSONVersXML
Convertit une chaîne de caractères au format JSON en une chaîne de caractères au format XML.
Versions 27 et supérieures
XMLVersJSON
Nouveauté 27
XMLVersJSON
XMLVersJSON
Convertit une chaîne de caractères au format XML en une chaîne de caractères au format JSON.
Version minimum requise
  • Version 27
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire