UltKit

JSON til YAML-konverter

Omskriv JSON til YAML, som mennesker kan læse, gennemgå og kommentere. Upload .json-filer, og få indrykket .yaml med de samme nøgler, værdier og den samme rækkefølge, klar til at lægge i et repository.

Datakonverter

eller slip CSV, TSV, TXT …-filer her ·

Maks. 95 MB pr. fil· Op til 20 filer· Slettes efter 30 minutter

Output

Filer behandles på vores servere og slettes efter 30 minutter.

Sådan bruger du værktøjet

  1. 1

    Tilføj JSON-filerne

    Upload API-svar, eksporterede indstillinger eller genererede manifester som .json, op til 20 filer og 95 MB pr. fil. Hver fil skal indeholde én gyldig JSON-værdi.

  2. 2

    Behold standardindstillingerne

    YAML er allerede valgt under Konvertér til. Der skal ikke ændres andet for en konfigurationsfil; outputtet bruger indrykning med to mellemrum.

  3. 3

    Konvertér og commit

    Tryk på Konvertér til YAML, download .yaml-filerne, tilføj kommentarer, hvor den næste læser får brug for dem, og commit.

Svar

Hvordan konverterer jeg JSON til YAML?

Upload .json-filen og tryk på Konvertér til YAML. Objekter bliver til indrykkede nøgle: værdi-blokke, arrays bliver til lister med bindestreger, og strenge, som YAML kunne misforstå, beholder deres anførselstegn.

Hvorfor konvertere JSON til YAML i konfigurationsfiler

Det meste JSON er produceret af software: et API-svar, en eksport af indstillinger, output fra en generator. Det meste YAML vedligeholdes af mennesker. Konverteringen markerer som regel det tidspunkt, hvor data holder op med at være maskinoutput og bliver noget, et team ejer, for eksempel et deployment-manifest i Git, en CI-pipeline eller et sæt Ansible-variabler.

Et typisk tilfælde: du kalder et cloud-API, får en JSON-beskrivelse af en ressource på 200 linjer tilbage og vil gemme den som infrastrukturkode. Konverteringen giver en fil uden tuborgklammer og kommaer, hvor en ændring på én linje giver en diff på én linje, og hvor du kan forklare mærkelige værdier i kommentarer. Det samme gælder testdata og oversættelsesfiler, som ikke-udviklere redigerer. Når du i stedet har brug for en flad tabel, til et regneark eller en rapport, passer JSON til CSV bedre.

Værktøjer, hvis konfigurationsfiler er YAML

Hvor konverteret YAML typisk ender
OrganisationKravKilde
GitHub ActionsWorkflows ligger i .github/workflows som .yml- eller .yaml-filerGitHub Docs
GitLab CI/CDPipelinen defineres i .gitlab-ci.yml i repositoriets rodGitLab Docs
Docker ComposeServices beskrives i compose.yaml (tidligere docker-compose.yml)Docker Docs
AnsiblePlaybooks og variabelfiler skrives i YAMLAnsible Docs
KubernetesManifester accepterer JSON eller YAML; dokumentation og Helm charts bruger YAMLKubernetes

Eksempel på JSON til YAML med vanskelige værdier

YAML-output for {"name":"butik-api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
name: butik-api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"

Det får du med YAML

  • Kommentarer med #
  • Kortere diffs i code review
  • Ingen tuborgklammer, kommaer eller anførselstegn på de fleste linjer
  • Tekst over flere linjer med |-blokskalarer

Det skal du være opmærksom på

  • Indrykning har betydning, så et overflødigt mellemrum ændrer strukturen
  • Tabulatorer er ikke tilladt til indrykning
  • Strenge uden anførselstegn kan blive læst som tal eller booleske værdier
  • Langsommere og mindre ensartede parsere end til JSON

Eksemplet viser, hvorfor en simpel find-og-erstat af tuborgklammer ikke er nok. Versionen 1.10 er en streng i JSON; skrevet uden anførselstegn i YAML ville den blive læst som tallet 1.1. NO, ISO-koden for Norge, ville blive læst som false af YAML 1.1-parsere som PyYAML. Begge beholder deres anførselstegn, mens ægte tal og booleske værdier står uden.

JSON og YAML sammenlignet

JSON

JavaScript Object Notation

JSON er et let tekstformat til strukturerede data, populariseret af Douglas Crockford i begyndelsen af 2000'erne og standardiseret som RFC 8259 og ECMA-404. Det repræsenterer objekter, arrays, strenge, tal, booleanske værdier og null med enkel, læsbar syntaks. Det er standardformatet til web-API'er, konfigurationsfiler og dataudveksling mellem apps i næsten alle programmeringssprog. Det har ingen indbyggede kommentarer, datoer eller skemaer, og store indlejrede filer er svære at læse uden en fremviser.

Komprimering
–
Gennemsigtighed
–
Animation
–
Introduceret
2001 · Douglas Crockford
JSON-konverter

YAML

YAML

YAML ("YAML Ain't Markup Language") er et letlæseligt dataformat, der først udkom i 2001. Det bruger indrykning i stedet for parenteser, understøtter kommentarer og er en overmængde af JSON. Det bruges meget til konfiguration i Docker Compose, Kubernetes, GitHub Actions og mange programmer. Afhængigheden af mellemrum gør det let at ødelægge med ét forkert placeret mellemrum, og nogle værdier, som "no" eller datoer, kan blive fortolket uventet.

Komprimering
–
Gennemsigtighed
–
Animation
–
Introduceret
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
YAML-konverter

Folk konverterer JSON til YAML, når genererede data eller API-data skal blive til en konfigurationsfil, som mennesker vedligeholder, gennemgår i pull requests og forsyner med kommentarer.

Spørgsmål om JSON til YAML-konverteren

Er JSON allerede gyldig YAML?

Under YAML 1.2 ja: revisionen fra 2009 blev skrevet, så alle JSON-dokumenter også er YAML-dokumenter. Du kunne indsætte JSON i en .yaml-fil, og de fleste værktøjer ville acceptere det. Konverteringen handler om læsbarhed: blokstil uden tuborgklammer, anførselstegn og kommaer er det, som reviewere og den næste vedligeholder forventer.

Hvorfor står nogle værdier i citationstegn i YAML-filen?

Fordi YAML uden anførselstegn ville læse dem som en anden type. En versionsstreng som 1.10 ville blive til tallet 1.1, og yes eller off kunne blive til booleske værdier i ældre parsere. Strenge, der ligner tal, datoer eller booleske værdier, skal have anførselstegn for at forblive strenge, så en omhyggelig konvertering beholder dem.

Kan jeg tilføje kommentarer efter konverteringen?

Ja, og det er en almindelig grund til at konvertere. Skriv # efterfulgt af din note i slutningen af en linje eller på en linje for sig. JSON havde ingen måde at forklare, hvorfor en værdi er sat; det har YAML, hvilket gør reviews og overdragelser nemmere.

Hvorfor giver min YAML en fejl om tabulatortegn?

YAML-specifikationen forbyder tabulatorer til indrykning; kun mellemrum tæller. Konverteren skriver mellemrum, men en editor, der er sat til at indsætte tabulatorer, kan ødelægge filen ved næste redigering. Indstil din editor til at bruge mellemrum i .yaml-filer.

Accepterer Kubernetes det konverterede manifest?

kubectl læser både JSON og YAML, så dataene er de samme uanset hvad; YAML-versionen er blot den, de fleste dokumentationer, Helm charts og code reviews bruger. Hvis du senere har brug for JSON igen til jq eller et API-kald, kan YAML til JSON vende det om.