Utilia

Konvertera JSON till YAML

Konvertera JSON till YAML och YAML till JSON i webbläsaren, med stöd för ankare, merge-nycklar och filer med flera dokument. Inget laddas upp.

Konvertering

Så använder du konverteraren från JSON till YAML

  1. Välj riktning: JSON → YAML eller YAML → JSON.
  2. Klistra in dina data, eller klicka på Öppna en fil för att läsa in en .json-, .yaml- eller .yml-fil (upp till 10 MB).
  3. Välj Indrag (2 eller 4 mellanslag) och, om du vill, Sortera nycklar i alfabetisk ordning.
  4. Klicka på Konvertera, eller fortsätt bara att skriva: resultatet uppdateras automatiskt. Om indata är ogiltig anger felmeddelandet rad och kolumn för problemet.
  5. Kopiera eller ladda ner resultatet. Byt riktning skickar tillbaka resultatet till indata för att konvertera åt andra hållet.

JSON och YAML: samma data, olika syntax

I praktiken är YAML en övermängd av JSON: alla data som ett JSON-dokument beskriver kan uttryckas i YAML, och YAML lägger till en lättare syntax som är enklare för människor att läsa och redigera. Därför skrivs Kubernetes-manifest, Docker Compose-filer, GitHub Actions- och GitLab CI-pipelines, Ansible-playbooks och OpenAPI-specifikationer oftast i YAML, medan API:er och program utbyter JSON.

Samma data i båda formaten:

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

JSON → YAML

Konverteraren skriver YAML i blockstil: en nyckel per rad, listor med bindestreck och nästlade objekt med indrag. Långa strängar viks aldrig, och strängar med flera rader använder den bokstavliga stilen | så att radbrytningarna behålls exakt. Strängar som YAML annars skulle läsa som en annan typ sätts inom citattecken: "yes", "1.0" eller "null" förblir strängar när du konverterar fram och tillbaka. Sortera nycklar ordnar nycklarna i varje objekt alfabetiskt, vilket gör två konfigurationsfiler lättare att jämföra.

YAML → JSON

YAML-koden läses med kärnschemat i YAML 1.2, samma regler som de flesta moderna verktyg använder:

  • true/false, tal och null (eller ~) blir JSON-värden. yes, no, on och off förblir strängar, som specifikationen för YAML 1.2 kräver.
  • Ankare och alias (&base, *base) expanderas, och merge-nycklar (<<: *base), vanliga i CI-filer, stöds.
  • En fil med flera dokument åtskilda av --- blir en JSON-lista med ett element per dokument, och ett meddelande talar om hur många som slogs ihop.
  • Kommentarer tas bort, eftersom JSON inte har några kommentarer.
  • .inf och .nan saknar motsvarighet i JSON och skrivs som strängarna "Infinity" och "NaN".

För att skydda din webbläsare mot ”billion laughs”-filer, där några få alias expanderar till miljarder värden, avvisas dokument som expanderar till mer än en miljon värden.

Vanliga misstag i YAML

  • Tabbar som indrag: YAML tillåter bara mellanslag.
  • Inkonsekventa indrag: element i samma lista eller objekt måste börja i samma kolumn.
  • Saknat mellanslag efter kolon: key:value är en enda sträng, medan key: value är ett nyckel–värde-par.
  • Specialtecken utan citattecken: ett värde som börjar med @, en bakåtfnutt, *, & eller !, eller som innehåller : eller #, måste stå inom citattecken.

Vanliga frågor

Skickas min fil till en server?

Nej. Konverteringen körs i din webbläsare, och dina konfigurationsfiler, hemligheter och API-data lämnar aldrig datorn.

Varför konverteras inte ”yes” och ”no” till booleska värden?

Sedan YAML 1.2 är bara true och false booleska värden. Äldre parsrar för YAML 1.1 behandlade yes, no, on och off som booleska, vilket orsakade det berömda ”Norgeproblemet” (landskoden NO lästes som false). Verktyget följer YAML 1.2.

Behålls kommentarer i YAML?

Nej. JSON har inga kommentarer, så de går förlorade i YAML → JSON. När du konverterar JSON → YAML kan du lägga till kommentarer i resultatet efteråt.

Kan jag konvertera en Kubernetes-fil med flera resurser?

Ja. Varje resurs åtskild av --- blir ett element i en JSON-lista. Konverterar du listan tillbaka till YAML får du ett enda dokument som innehåller en lista.

Ändrar konverteraren nycklarnas ordning?

Inte om du inte kryssar i Sortera nycklar: nycklarna behåller den ordning de har i din indata. Det enda undantaget kommer från JavaScript självt: nycklar som är heltal, som "10" eller "2", placeras först i stigande ordning.