JSON et XML savent tous deux représenter des données hiérarchiques, et ils divergent assez pour qu'aucune conversion entre eux ne soit purement mécanique. JSON a des objets, des tableaux, des chaînes, des nombres, des booléens et null. XML a des éléments, des attributs et du texte, et aucune notion native de nombre ni de liste. Tout convertisseur adopte donc des conventions, et l'utile est de savoir lesquelles.
Les objets se transposent proprement : chaque clé devient un élément contenant la valeur convertie. Les tableaux non, car XML n'a pas de tableau. La convention habituelle est de répéter le nom de l'élément une fois par entrée, si bien qu'une liste de trois étiquettes devient trois éléments successifs. Cela fonctionne et cela perd une chose : un tableau d'un seul élément et une valeur unique deviennent indiscernables en sortie, ce qui explique qu'un aller-retour XML vers JSON ne rende pas toujours ce dont on est parti.
Les noms de clés sont l'autre contrainte. Un nom d'élément XML ne peut pas commencer par un chiffre, ne peut pas contenir d'espace, et obéit à des règles sur les caractères autorisés. Les clés JSON n'ont aucune de ces limites, donc une clé comme « total 2024 » est du JSON parfaitement légal et pas un nom d'élément légal. Quelque chose doit céder : le nom est échappé, réécrit, ou la conversion échoue, et il vaut mieux savoir lequel des trois votre sortie représente.
Les types sont aplatis. Le nombre 42, la chaîne « 42 » et un booléen deviennent tous des noeuds de texte, parce que c'est tout ce qu'a XML. Un consommateur qui a besoin de la distinction doit la retrouver depuis un schéma, ce qui est exactement à quoi servent les schémas XML et exactement ce qu'une conversion nue ne donne pas.
La plupart des gens qui convertissent du JSON en XML alimentent un système qui ne parle que XML : une intégration d'entreprise ancienne, un point d'accès SOAP, un format d'échange administratif ou bancaire, une chaîne éditoriale. Ces systèmes ont en général un schéma, et le conseil honnête est de valider la sortie contre lui plutôt que de supposer qu'une conversion structurellement sensée est celle qu'ils attendent.
Comme pour tous les outils de ce site, la conversion s'exécute dans l'onglet et le document n'est jamais transmis, ce qui est le sujet quand la charge utile est le genre de fichier d'échange qui contient des données financières ou personnelles.