Les frontières de la conversion JSON ↔ YAML et XML
L'affirmation que JSON est un sous-ensemble de YAML ne garantit qu'un sens, et XML n'a aucune correspondance JSON officielle — tout repose sur des conventions.
Convertir entre JSON et YAML, XML, CSV, TypeScript, Java, Go et SQL n'est jamais sans perte. Ce qui compte, c'est d'être explicite sur l'endroit où la perte se produit.
8 articlesL'affirmation que JSON est un sous-ensemble de YAML ne garantit qu'un sens, et XML n'a aucune correspondance JSON officielle — tout repose sur des conventions.
CSV est bidimensionnel, JSON est en forme d'arbre. La partie difficile de la conversion n'est pas le code — c'est de décider à l'avance comment les tableaux sont aplatis et comment les types sont préservés.
Les structures imbriquées, les champs incohérents et les tableaux de tableaux sont là où la conversion JSON vers tableur casse. Quatre approches classées par temps de résultat, chacune avec ses compromis.
Transformer du JSON en INSERT SQL cache le découpage en tables imbriquées, NULL contre champ absent, l'échappement et les écarts de dialectes. Instructions exécutables et tableaux comparatifs pour chaque piège.
Générer une interface à partir d'un JSON d'exemple ne fait que la moitié du travail : champs facultatifs, null, unions, dates et grands entiers demandent une passe humaine, et les types ne font aucune validation à l'exécution.
La commande la plus recopiée des tutoriels, yq -P input.json > output.yaml, produit encore du JSON. Cet article teste yq v4.44.6, PyYAML 6.0.3 et js-yaml sur un échantillon de 2.39 MB, explique pourquoi l'extension de l'entrée décide du format de sortie, et donne les écritures correctes pour la conversion par lots, les guillemets, l'indentation et la précision des grands entiers.
Neuf expériences sur un vrai convertisseur : la stratégie « clés de la première ligne » perd des champs en silence, null, l'absence et la chaîne vide deviennent tous des cellules vides, un entier de 20 chiffres perd sa précision dès JSON.parse, et un point dans une clé fait entrer en collision deux chemins différents dans une même colonne. Comment l'en-tête se construit, quelles valeurs se déforment et comment choisir une stratégie selon l'usage aval.
Un examen concret de ce qu'un générateur JSON → Java produit vraiment——les nombres deviennent Double, les objets imbriqués deviennent des classes internes statiques, et aucune annotation Jackson n'est émise. Précision monétaire, renommage des champs, effacement des génériques, champs inconnus et dates : cinq choses à ajouter soi-même, avec du code prêt à copier.