Utilia

JSON til YAML-konverterer

Konverter JSON til YAML og YAML til JSON i nettleseren din, med støtte for ankere, sammenslåingsnøkler og filer med flere dokumenter. Ingenting lastes opp.

Konvertering

Slik bruker du JSON til YAML-konvertereren

  1. Velg retning: JSON → YAML eller YAML → JSON.
  2. Lim inn dataene, eller klikk Åpne fil for å laste en .json-, .yaml- eller .yml-fil (opptil 10 MB).
  3. Velg Innrykk (2 eller 4 mellomrom) og, hvis du vil, Sorter nøkler alfabetisk.
  4. Klikk Konverter, eller bare fortsett å skrive: resultatet oppdateres automatisk. Hvis inndataene er ugyldige, oppgir feilmeldingen linje og kolonne for problemet.
  5. Kopier eller last ned resultatet. Bytt retning sender resultatet tilbake til inndataene slik at du kan konvertere den andre veien.

JSON og YAML: samme data, ulik syntaks

YAML er i praksis en overmengde av JSON: hvert JSON-dokument beskriver data som YAML kan uttrykke, og YAML legger til en lettere syntaks som er enklere for mennesker å lese og redigere. Derfor skrives Kubernetes-manifester, Docker Compose-filer, GitHub Actions- og GitLab CI-pipelines, Ansible-playbooks og OpenAPI-spesifikasjoner som regel i YAML, mens API-er og programmer utveksler JSON.

De samme dataene i begge formater:

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

JSON → YAML

Konvertereren skriver YAML i blokkstil: én nøkkel per linje, lister med bindestreker og nestede objekter rykket inn. Lange strenger brytes aldri, og strenger med flere linjer bruker den bokstavelige |-stilen slik at linjeskift beholdes nøyaktig. Strenger som YAML ellers ville lest som en annen type, settes i anførselstegn: "yes", "1.0" eller "null" forblir strenger etter en rundtur. Sorter nøkler sorterer nøklene i hvert objekt alfabetisk, noe som gjør to konfigurasjonsfiler lettere å sammenligne.

YAML → JSON

YAML-en leses med kjerneskjemaet i YAML 1.2, de samme reglene de fleste moderne verktøy bruker:

  • true/false, tall og null (eller ~) blir JSON-verdier, mens yes, no, on og off forblir strenger, slik YAML 1.2-spesifikasjonen krever.
  • Ankere og aliaser (&base, *base) utvides, og sammenslåingsnøkler (<<: *base), vanlige i CI-filer, støttes.
  • En fil med flere dokumenter adskilt av --- blir en JSON-liste med ett element per dokument, og en melding forteller hvor mange som ble slått sammen.
  • Kommentarer droppes, siden JSON ikke har kommentarer.
  • .inf og .nan har ingen JSON-ekvivalent. De skrives som strengene "Infinity" og "NaN".

For å beskytte nettleseren din mot «billion laughs»-filer, der noen få aliaser utvides til milliarder av verdier, avvises et dokument som utvides til mer enn en million verdier.

Vanlige YAML-feil

  • Tabulatorer til innrykk: YAML tillater bare mellomrom.
  • Inkonsekvent innrykk: elementer i samme liste eller objekt må starte i samme kolonne.
  • Manglende mellomrom etter kolon: key:value er én enkelt streng, mens key: value er et nøkkel-verdi-par.
  • Spesialtegn uten anførselstegn: en verdi som begynner med @, et grav-aksent-tegn, *, & eller !, eller som inneholder : eller #, må settes i anførselstegn.

Ofte stilte spørsmål

Sendes filen min til en server?

Nei. Konverteringen kjører i nettleseren din, og konfigurasjonsfilene, hemmelighetene eller API-dataene dine forlater aldri datamaskinen din.

Hvorfor blir ikke «yes» og «no» konvertert til boolske verdier?

Siden YAML 1.2 er det bare true og false som er boolske verdier. Eldre YAML 1.1-parsere behandlet yes, no, on og off som boolske verdier, noe som ga det berømte «Norge-problemet» (landskoden NO ble lest som false). Dette verktøyet følger YAML 1.2.

Beholdes YAML-kommentarer?

Nei. JSON har ikke kommentarer, så de går tapt i YAML → JSON. Når du konverterer JSON → YAML, kan du legge til kommentarer i resultatet etterpå.

Kan jeg konvertere en Kubernetes-fil med flere ressurser?

Ja. Hver ressurs adskilt av --- blir ett element i en JSON-liste. Å konvertere den listen tilbake til YAML gir ett enkelt dokument som inneholder en liste.

Endrer konvertereren rekkefølgen på nøklene?

Ikke med mindre du huker av for Sorter nøkler: nøklene beholder rekkefølgen de har i inndataene. Det eneste unntaket kommer fra JavaScript selv: nøkler som er hele tall, som "10" eller "2", plasseres først, i stigende rekkefølge.