Utilia

JSON til YAML-konverter

Konvertér JSON til YAML og YAML til JSON i din browser, med understøttelse af ankre, merge-nøgler og filer med flere dokumenter. Intet uploades.

Konvertering

Sådan bruger du JSON til YAML-konverteren

  1. Vælg retningen under Konvertering: JSON → YAML eller YAML → JSON.
  2. Indsæt dine data, eller klik på Åbn fil for at indlæse en .json-, .yaml- eller .yml-fil (op til 10 MB).
  3. Vælg Indrykning (2 eller 4 mellemrum) og, hvis du vil, Sortér nøgler alfabetisk.
  4. Klik på Konvertér, eller skriv bare videre: Resultatet opdateres automatisk. Hvis inputtet er ugyldigt, angiver fejlmeddelelsen problemets linje og kolonne.
  5. Kopiér eller download resultatet. Skift retning sender resultatet tilbage til inputfeltet, så du kan konvertere den anden vej.

JSON og YAML: de samme data, forskellig syntaks

YAML er i praksis en overmængde af JSON: Ethvert JSON-dokument beskriver data, som YAML kan udtrykke, og YAML tilføjer en lettere syntaks, som er nemmere for mennesker at læse og redigere. Derfor skrives Kubernetes-manifester, Docker Compose-filer, GitHub Actions- og GitLab CI-pipelines, Ansible-playbooks og OpenAPI-specifikationer som regel i YAML, mens API’er og programmer udveksler JSON.

De samme data i begge formater:

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

JSON → YAML

Konverteren skriver YAML i blokstil: én nøgle pr. linje, lister med bindestreger og indlejrede objekter indrykket. Lange strenge foldes aldrig, og strenge med flere linjer bruger den bogstavelige |-stil, så linjeskift bevares præcist. Strenge, som YAML ellers ville læse som en anden type, sættes i anførselstegn: "yes", "1.0" eller "null" forbliver strenge efter turen frem og tilbage. Sortér nøgler sorterer nøglerne i hvert objekt alfabetisk, hvilket gør to konfigurationsfiler lettere at sammenligne.

YAML → JSON

YAML’en læses med kerneskemaet i YAML 1.2, de samme regler som de fleste moderne værktøjer bruger:

  • true/false, tal og null (eller ~) bliver til JSON-værdier. yes, no, on og off forbliver strenge, sådan som YAML 1.2-specifikationen kræver.
  • Ankre og aliasser (&base, *base) udvides, og merge-nøgler (<<: *base), som er almindelige i CI-filer, understøttes.
  • En fil med flere dokumenter adskilt af --- bliver til en JSON-liste med ét element pr. dokument, og en meddelelse fortæller, hvor mange der er slået sammen.
  • Kommentarer udelades, da JSON ikke har kommentarer.
  • .inf og .nan har ingen JSON-ækvivalent. De skrives som strengene "Infinity" og "NaN".

For at beskytte din browser mod »billion laughs«-filer, hvor nogle få aliasser udvides til milliarder af værdier, afvises et dokument, der udvides til mere end en million værdier.

Almindelige YAML-fejl

  • Tabulatorer som indrykning: YAML tillader kun mellemrum.
  • Uensartet indrykning: Elementer i den samme liste eller det samme objekt skal begynde i samme kolonne.
  • Manglende mellemrum efter kolonet: key:value er én enkelt streng, mens key: value er et nøgle-værdi-par.
  • Specialtegn uden anførselstegn: En værdi, der begynder med @, et backtick, *, & eller !, eller som indeholder : eller #, skal sættes i anførselstegn.

Ofte stillede spørgsmål

Bliver min fil sendt til en server?

Nej. Konverteringen kører i din browser, og dine konfigurationsfiler, hemmeligheder eller API-data forlader aldrig din computer.

Hvorfor bliver »yes« og »no« ikke konverteret til booleske værdier?

Siden YAML 1.2 er kun true og false booleske værdier. Ældre YAML 1.1-parsere behandlede yes, no, on og off som booleske værdier, hvilket gav det berømte »Norge-problem« (landekoden NO blev læst som falsk). Dette værktøj følger YAML 1.2.

Bevares YAML-kommentarer?

Nej. JSON har ingen kommentarer, så de går tabt ved YAML → JSON. Når du konverterer JSON → YAML, kan du tilføje kommentarer til resultatet bagefter.

Kan jeg konvertere en Kubernetes-fil med flere ressourcer?

Ja. Hver ressource adskilt af --- bliver til ét element i en JSON-liste. Hvis du konverterer den liste tilbage til YAML, får du ét enkelt dokument, der indeholder en liste.

Ændrer konverteren rækkefølgen af nøgler?

Ikke medmindre du sætter kryds ved Sortér nøgler: Nøglerne beholder den rækkefølge, de har i dit input. Den ene undtagelse kommer fra JavaScript selv: Nøgler, der er hele tal, som "10" eller "2", placeres først i stigende rækkefølge.