CodeKitHub
JSON tööriistad

JSON ↔ YAML muundur

Viimati uuendatud:

JSON-i muutmisel YAML-iks saavad objektidest taandega key: value plokid ja massiividest `-` eesliitega loendielemendid — vastupidine teisendus lahendab YAML-i tüübilühendid, nagu jutumärkideta true, null või arvud, tagasi õigeteks JSON tüüpideks. See tööriist teeb seda teisendust mõlemas suunas, täielikult sinu brauseris.

Mis see tööriist on?

YAML on enamiku tänapäevaste seadistusfailide eelistatud vorming — Kubernetese manifestid, Docker Compose, GitHub Actionsi ja GitLab CI pipeline'id, Ansible playbook'id —, sest see on käsitsi failide muutmisel inimesele loetavam kui JSON: enamiku võtmete ümber pole jutumärke vaja, lõpukomasid pole karta ja kommentaarid on toetatud. JSON on omakorda see, mida enamik API-sid ja programmeerimiskeeli loomupäraselt tekitab ja tarbib.

See tööriist ühendab need kaks, kasutades js-yaml — laialt kasutatavat JavaScripti realisatsiooni YAML spetsifikatsioonist —, nii et parsimine ja genereerimine järgivad samu reegleid, mida rakendaks ka YAML-teadlik tööriist nagu `kubectl` või CI käivitaja.

JSON-i muutmine YAML-iks teeb objektidest taandega key: value plokid ja massiividest `-` eesliitega loendielemendid. YAML-i muutmine JSON-iks teeb vastupidist ja lahendab ka YAML-ile omased tüübilühendid (nagu jutumärkideta `true`, `null` või arvud) nende õigeteks JSON tüüpideks.

Miks seda kasutada?

  • Kahesuunaline — muuda JSON YAML-iks või YAML JSON-iks samal ekraanil.
  • Standarditel põhinev parsimine ja genereerimine js-yaml'i abil, nii et väljund vastab sellele, mida ootab päris YAML tööriistastik (Kubernetes, CI süsteemid, Ansible).
  • Käsitleb pesastatud objekte ja massiive mistahes sügavusel, teisendades YAML-i taandepõhise struktuuri ja JSON-i sulgude vahel.
  • Tõlgendab korrektselt YAML-i tüübilühendeid — jutumärkideta true/false, null ja arvväärtused saavad õigeteks JSON tüüpideks, mitte stringideks.
  • Kopeeri lõikelauale või laadi alla .json või .yaml failina.
  • 100% brauseripoolne — midagi, mida sa kleebid, ei laeta kuhugi üles.

Kuidas kasutada

  1. Vali suund: "JSON → YAML" või "YAML → JSON".
  2. Kleebi oma andmed sisestuskasti.
  3. Klõpsa "Convert".
  4. Vaata tulemus üle, seejärel kopeeri see või klõpsa "Download", et fail salvestada.

Näide

Sisend

{"name":"Alice","roles":["admin","editor"],"active":true}

Tulemus

name: Alice
roles:
  - admin
  - editor
active: true

Pane tähele, kuidas massiivist saab kriipsudega loend "roles" all ja tõeväärtus jääb jutumärkideta true'ks, mitte ei muutu stringiks "true".

Praktilised nõuanded

  • Kubernetese manifesti või GitHub Actionsi töövoo koostamisel: koosta struktuur esmalt JSON-ina (paljud toimetajad ja AI tööriistad genereerivad JSON-it usaldusväärsemalt), seejärel teisenda lõpliku faili jaoks YAML-iks.
  • Vigase YAML seadistuse silumine: teisenda see JSON-iks, et näha täpselt, millised väärtused on stringid, arvud või tõeväärtused — YAML-i paindlik süntaks võib peita tüübilahknevusi, mis on JSON-is ilmsed.
  • Kui su JSON-is on erimärkidega või numbriga algavaid võtmeid, paneb js-yaml need YAML väljundis automaatselt jutumärkidesse, et need tagasi parsides korrektselt loetaks.

Miks tüübisunnitus on YAML-i kõige keerulisem osa

YAML-i suurim kasutusmugavuse eelis JSON-i ees — enamiku väärtuste ümber pole jutumärke vaja — on ühtlasi ka selle suurim peidetud vigade allikas. Klassikaline näide on nn "Norra probleem": YAML 1.1 (mida kasutavad paljud vanemad parserid) puhul tõlgendatakse jutumärkideta väärtust `no` tõeväärtusena `false`, mitte stringina "no", mis on päriselt lõhkunud riigikoode loetlevaid seadistusfaile, kus Norra jäi kaduma. See tööriist järgib YAML 1.2 spetsifikatsiooni, mis kitsendas jutumärkideta tõeväärtusena tõlgendatavate väärtuste hulga vaid `true` ja `false` peale (ja nende suurtähevariantidele), vähendades — kuigi mitte täielikult kõrvaldamata — seda tüüpi üllatusi. Kui pole kindel, kuidas väärtus tüpiseeritakse, on kõige ohutum see YAML-is selgesõnaliselt jutumärkidesse panna.

Korduma kippuvad küsimused

Kas YAML kommentaarid säilivad JSON-iks ja tagasi teisendamisel?

Ei. JSON-il pole kommentaaride mõistet, seega YAML-i JSON-iks teisendamisel kaovad kõik allika # kommentaarid. Kui teisendad selle JSON-i tagasi YAML-iks, kommentaare tagasi ei teki — see on vormingu enda piirang, mitte tööriista viga.

Kuidas tööriist käsitleb YAML ankruid ja aliaseid (& ja *)?

Aluseks olev parser (js-yaml) lahendab ankrud ja aliased enne JSON-i loomist, seega YAML-fail, mis kasutab & ankruid ja * aliaseid andmeploki korduvaks kasutamiseks, teiseneb JSON-iks nii, et need andmed on igas viitekohas täielikult avatud.

Miks minu YAML arv tuli JSON-is stringina või vastupidi?

Kui väärtus on allika YAML-is jutumärkides (nt version: "3.10"), käsitletakse seda meelega stringina — see on oluline, sest jutumärkideta YAML-arvud nagu 3.10 võivad ujukomaarvuks parsides kaotada lõpunulli. Pane väärtus allika YAML-is jutumärkidesse, kui vajad seda kindlasti tekstina.

Kas ma saan teisendada mitme dokumendiga YAML-faili (eraldatud ----ga)?

See tööriist teisendab korraga ühe YAML dokumendi. Kui su failis on mitu dokumenti --- eraldajatega, teisenda üks osa korraga või eemalda eraldajad ja liida need vajadusel üheks dokumendiks.

Kas mu andmed laetakse kuhugi üles?

Ei. Teisendus toimub täielikult sinu brauseris js-yaml teegi abil — midagi ei saadeta serverisse, mistõttu on ohutu kasutada seda ka päris seadistusfailidega, sealhulgas sisemiste hostinimede või infrastruktuuri detailidega.

Seotud tööriistad