Le YAML porte les mêmes données que le JSON, écrites pour être lues et modifiées par des gens. Le JSON est un arbre de données fait d'objets, de listes, de nombres et de chaînes. Python se tient entre les deux, et cette page dit exactement ce qui arrive à un fichier YAML en route vers le JSON.
Ce qui s'exécute quand un fichier YAML devient un JSON
Python et sa bibliothèque standard, sur une machine que nous louons et que nous surveillons. Votre fichier YAML est envoyé une fois, Python s'exécute une fois, le fichier JSON revient, et aucun des deux fichiers n'est conservé. YAML vers JSON fait partie des 3649 paires sur lesquelles ce moteur a été sondé avec un vrai fichier, et c'est pour cela que cette page existe quand celles que la sonde n'a pas su prouver n'existent pas.
Ce qui survit du fichier YAML dans le fichier JSON
Chaque valeur, et les noms que vous leur avez donnés. Cette paire lit votre YAML en mémoire et le réécrit en JSON : aucun champ n'est renommé, réordonné en autre chose ni discrètement oublié. Le moteur relit sa propre sortie, compte les éléments et refuse le résultat si le compte a bougé.
Toute la structure, à n'importe quelle profondeur. Le YAML et le JSON décrivent les mêmes formes : l'imbrication, les listes, les nombres, les booléens et la valeur nulle traversent tous tels quels. C'est la seule partie de la famille où rien n'est en risque.
Ce que la conversion YAML vers JSON vous coûte
Les commentaires, et la mise en forme. Un YAML porte les deux ; la conversion lit les données et les réécrit à neuf, si bien que la présentation est celle du rédacteur et que les commentaires ont disparu. Les données elles-mêmes sont intactes.
D'où viennent les fichiers YAML et JSON
YAML. Écrit en 2001 pour être lisible là où le JSON n'est qu'analysable. Il porte exactement les mêmes formes, si bien que la conversion entre les deux ne perd rien. C'est ce vers quoi la plupart des outils se tournent quand un humain devra ouvrir le fichier : Kubernetes, GitHub Actions, Docker Compose.
Si un modèle doit lire le fichier JSON
La structure est ce qui subsiste du fichier YAML, et la structure est ce dont un modèle a besoin. YAML en entrée, JSON en sortie, avec l'arbre des titres intact plutôt qu'aplati en un seul long paragraphe.
YAML vers JSON, mesuré plutôt que promis
En passant YAML vers JSON sur le moteur réel avec un vrai fichier, Python a écrit 110 octets au format JSON en moins d'un dixième de seconde, machine par ailleurs au repos. C'est un fichier YAML un jour donné et non une moyenne, et c'est pourquoi le nombre est donné avec le fichier qui l'a produit.
Le verdict YAML vers JSON a été obtenu par l'analyse de la donnée relue et la recherche d'un mot témoin, c'est-à-dire que la sortie a été relue et reconnue. Le contrôle employé compte, parce qu'ils ne prouvent pas tous la même chose, et un code de statut 200 ne prouve strictement rien sur ce que le fichier JSON contient.
Les autres routes vers JSON, et ce qu'elles ont mesuré
Parmi les routes publiées vers JSON, YAML est la huitième plus grosse sortie des 8 mesurées. Les fichiers témoins diffèrent : ce classement porte sur la sonde et non sur votre document.
DOCX vers JSON : 1 722 octets en 0,1 secondes.
HTML vers JSON : 2 058 octets en moins d'un dixième de seconde.
MD vers JSON : 1 726 octets en moins d'un dixième de seconde.
ODT vers JSON : 1 761 octets en 0,1 secondes.
RTF vers JSON : 1 743 octets en 0,1 secondes.
Ce que nous ne prétendrons pas sur YAML vers JSON
Un fichier YAML de plus de 25 Mo est refusé avant la fin de l'envoi plutôt qu'après, pour que vous n'attendiez pas un refus.
Une conversion YAML vers JSON qui dépasse 50 secondes est tuée, et le processus Python avec elle. Une exécution abandonnée resterait posée sur l'un des deux cœurs de la machine jusqu'à ce que quelqu'un le remarque.
Que cette paire fonctionne dépend de vos données et pas seulement des deux formats. Un YAML dont la forme ne convient pas au JSON est refusé par un 422 et un message qui nomme ce qui manque, ce qui est différent de « ce format n'est pas pris en charge » et se dit différemment exprès. Le refus est immédiat et ne coûte rien.
Une note sur le mot JSON, parce qu'il veut dire deux choses ici. Convertir du Markdown ou un fichier Word en JSON donne l'arbre syntaxique de pandoc, qui décrit le document. Convertir un YAML donne vos données. Les deux sont du JSON et ce ne sont pas la même chose ; le site choisit d'après la source, seule façon de les distinguer.
Le XML n'est pas de cette famille, et c'est l'absence évidente. Il n'a pas de correspondance manifeste avec ce modèle : attributs contre éléments, texte mêlé, ordre significatif. Chaque conversion demanderait d'inventer une convention, et une convention inventée est un piège pour qui lira le fichier ensuite. La famille s'en tient à ce qui se traduit sans choix arbitraire.
Un fichier YAML à la fois, choisi dans le navigateur. Il n'y a rien d'autre à régler et rien d'autre à proposer.
YAML vers JSON : les questions que l'on pose
Qu'est-ce qui convertit vraiment mon fichier YAML en JSON ?
C'est Python qui s'en charge, avec sa bibliothèque standard, sur une machine que nous louons et que nous surveillons. Ni astuce de navigateur, ni service d'un tiers : le fichier YAML est envoyé une fois, Python s'exécute une fois, le JSON revient, et aucun des deux fichiers n'est conservé ensuite.
Combien de temps prend une conversion YAML vers JSON ?
Sur le fichier utilisé par la sonde, Python a mis moins d'un dixième de seconde et écrit 110 octets de JSON. C'est une mesure réelle sur un fichier YAML réel, pas une moyenne et pas une promesse sur le vôtre : un YAML plus gros prend plus longtemps, et au-delà de 50 secondes l'exécution est arrêtée.
Qu'est-ce que je perds en passant du YAML au JSON ?
Celle qu'il faut connaître en premier : les commentaires, et la mise en forme. Un YAML porte les deux ; la conversion lit les données et les réécrit à neuf, si bien que la présentation est celle du rédacteur et que les commentaires ont disparu. Les données elles-mêmes sont intactes.
Mes commentaires survivront-ils ?
Non. La conversion lit les données et les réécrit à neuf : les commentaires et la mise en forme sont ceux du rédacteur. Les données elles-mêmes sont intactes, à n'importe quelle profondeur.
Mes données sont-elles envoyées ailleurs ?
Non. Elles vont sur une machine que nous louons et que nous surveillons, sont lues par Python et réécrites, et aucun des deux fichiers n'est conservé. Il n'y a aucun service tiers dans cette famille et aucun modèle qui lise vos données.
La conversion YAML vers JSON est-elle gratuite ?
Il y a une franchise gratuite chaque mois, et une conversion YAML vers JSON coûte un demi-crédit dessus. Quand la franchise est épuisée, l'outil le dit et s'arrête, plutôt que de vous remettre discrètement un JSON moins bon.