Utilia

Convertidor de JSON a YAML

Converteix JSON a YAML i YAML a JSON al navegador, amb àncores, claus de combinació i fitxers de diversos documents. No es puja res enlloc.

Conversió

Com fer servir el convertidor de JSON a YAML

  1. Tria la direcció: JSON → YAML o YAML → JSON.
  2. Enganxa les dades, o fes clic a Obre un fitxer per carregar un fitxer .json, .yaml o .yml (fins a 10 MB).
  3. Tria la Sagnia (2 o 4 espais) i, si vols, Ordena les claus alfabèticament.
  4. Fes clic a Converteix, o simplement continua escrivint: el resultat s’actualitza automàticament. Si l’entrada no és vàlida, el missatge d’error indica la línia i la columna del problema.
  5. Copia o baixa el resultat. Inverteix la direcció envia la sortida de nou a l’entrada per convertir-la en sentit contrari.

JSON i YAML: les mateixes dades, una sintaxi diferent

A la pràctica, YAML és un superconjunt de JSON: tot document JSON descriu dades que YAML pot expressar, i YAML hi afegeix una sintaxi més lleugera que és més fàcil de llegir i d’editar per a les persones. Per això els manifestos de Kubernetes, els fitxers de Docker Compose, els pipelines de GitHub Actions i GitLab CI, els playbooks d’Ansible i les especificacions d’OpenAPI se solen escriure en YAML, mentre que les API i els programes intercanvien JSON.

Les mateixes dades en tots dos formats:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

JSON → YAML

El convertidor escriu YAML en estil de bloc: una clau per línia, llistes amb guions i objectes imbricats amb sagnia. Les cadenes llargues no es pleguen mai, i les cadenes de diverses línies fan servir l’estil literal | perquè els salts de línia es conservin exactament. Les cadenes que YAML llegiria d’una altra manera com a un altre tipus es posen entre cometes: "yes", "1.0" o "null" continuen sent cadenes després d’anar i tornar. Ordena les claus ordena alfabèticament les claus de cada objecte, cosa que facilita comparar dos fitxers de configuració.

YAML → JSON

El YAML es llegeix amb l’esquema bàsic de YAML 1.2, les mateixes regles que fan servir la majoria d’eines modernes:

  • true/false, els nombres i null (o ~) es converteixen en valors JSON; yes, no, on i off continuen sent cadenes, tal com exigeix l’especificació de YAML 1.2.
  • Les àncores i els àlies (&base, *base) s’expandeixen, i les claus de combinació (<<: *base), habituals als fitxers de CI, són compatibles.
  • Un fitxer amb diversos documents separats per --- es converteix en una matriu JSON amb un element per document, i un missatge t’indica quants se n’han combinat.
  • Els comentaris s’eliminen, ja que JSON no té comentaris.
  • .inf i .nan no tenen equivalent en JSON; s’escriuen com les cadenes "Infinity" i "NaN".

Per protegir el teu navegador dels fitxers «billion laughs», en què uns quants àlies s’expandeixen a milers de milions de valors, es rebutja un document que s’expandeixi a més d’un milió de valors.

Errors habituals en YAML

  • Tabuladors per a la sagnia: YAML només admet espais.
  • Sagnia incoherent: els elements d’una mateixa llista o d’un mateix objecte han de començar a la mateixa columna.
  • Falta un espai després dels dos punts: key:value és una sola cadena, mentre que key: value és un parell clau-valor.
  • Caràcters especials sense cometes: un valor que comença per @, un accent greu, *, & o !, o que conté : o #, s’ha de posar entre cometes.

Preguntes freqüents

S'envia el meu fitxer a un servidor?

No. La conversió s’executa al teu navegador, i els teus fitxers de configuració, secrets o dades d’API no surten mai del teu ordinador.

Per què «yes» i «no» no es converteixen en booleans?

Des de YAML 1.2, només true i false són booleans. Els analitzadors antics de YAML 1.1 tractaven yes, no, on i off com a booleans, cosa que va causar el famós «problema de Noruega» (el codi de país NO llegit com a fals). Aquesta eina segueix YAML 1.2.

Es conserven els comentaris de YAML?

No. JSON no té comentaris, de manera que es perden en passar de YAML a JSON. Quan converteixes de JSON a YAML, pots afegir comentaris al resultat després.

Puc convertir un fitxer de Kubernetes amb diversos recursos?

Sí. Cada recurs separat per --- es converteix en un element d’una matriu JSON. Si converteixes aquesta matriu de nou a YAML, obtens un sol document que conté una llista.

El convertidor canvia l'ordre de les claus?

No, tret que marquis Ordena les claus: les claus conserven l’ordre en què apareixen a l’entrada. L’única excepció ve del mateix JavaScript: les claus que són nombres enters, com "10" o "2", es posen primer, en ordre ascendent.