§

Lipește JSON-ul sau YAML-ul pe care dorești să îl convertești.

Mod
Indentare
Opțiuni
§

Ieșire

yaml

Saltul între JSON și YAML este o muncă zilnică pentru echipele de platformă americane și britanice. Manifestele Kubernetes pentru AWS EKS și GKE la băncile Fortune 500 sunt redactate în YAML, dar consumate de kubectl și Helm ca JSON intern, iar proiectele CNCF livrate prin Linux Foundation publică YAML-uri de referință pe care Argo CD ApplicationSets le remodelează din mers. YAML-urile GitHub Actions, specificațiile OpenAPI 3, șabloanele AWS CloudFormation și fișierele dbt profiles.yml pentru Snowflake se îndoaie toate între cele două formate în timpul revizuirii codului. Grupurile fintech britanice fac călătorii dus-întors cu sarcinile JSON Open Banking față de fixture-uri YAML, în timp ce echipele NHS Digital convertesc YAML-urile Helm în JSON pentru validare de schemă împotriva unui pipeline Ajv înainte de implementare.

Ce este conversia JSON ↔ YAML?

JSON (JavaScript Object Notation, RFC 8259) este un format text strict, delimitat cu acolade pentru date structurate; YAML (YAML Ain't Markup Language, versiunea 1.2) este un superset al JSON care folosește indentarea, liniile noi și o sintaxă lizibilă pentru același model de valori. Convertirea între ele îți permite să pivotezi aceeași configurare între o formă prietenoasă mașinilor (JSON pentru API-uri, validare de schemă, transformări programatice) și o formă prietenoasă oamenilor (YAML pentru revizuire de cod, manifeste Kubernetes, fluxuri GitHub Actions) fără a retasta o singură cheie.

Cum funcționează conversia JSON ↔ YAML?

Fiecare conversie rulează local în browserul tău folosind biblioteca js-yaml (MIT, versiunea 4.1.0). Pașii principali sunt:

  1. Selectorul de mod (Detectare automată / JSON → YAML / YAML → JSON) decide ce pipeline rulează. În modul Detectare automată, primul caracter non-spațiu al intrării alege direcția — { sau [ înseamnă JSON; orice altceva înseamnă YAML.
  2. JSON → YAML: JSON.parse validează intrarea și produce o valoare JavaScript; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) scrie forma YAML 1.2. Cu Multi-document activat, un tablou de intrare este descărcat câte un element per document și unite cu separatoare ---.
  3. YAML → JSON: jsyaml.loadAll parsează fiecare document din intrare (gestionând separatoarele --- automat) într-un tablou; intrările cu un singur document sunt dezvăluite astfel încât ieșirea JSON să fie documentul însuși, nu un tablou cu un element.
  4. Indentarea (2 sau 4 spații) și Printarea frumoasă sunt configurabile. Printarea frumoasă dezactivată emite JSON minificat prin JSON.stringify(value) fără spații albe.
  5. Rezultatul este scris în căsuța de text doar pentru citire. La eșecuri de parsare YAML, mesajul de eroare include linia și coloana indexate de la 1 raportate de e.mark al js-yaml pentru a sări direct la eroare.

De ce să convertești JSON și YAML cu acest instrument?

  • Confidențialitate: fiecare parsare, transformare și emitere are loc în browserul tău. Datele — inclusiv secrete Kubernetes, JWT-uri semnate și configurări proprietare — nu ajung niciodată pe serverele noastre.
  • YAML multi-document: jsyaml.loadAll recunoaște separatoarele --- și returnează un tablou de documente, pe care convertorul le dezvăluie pentru cazurile cu un singur document sau le păstrează ca tablou JSON pentru cazurile cu mai multe documente.
  • Ancore și aliasuri rezolvate: mecanismul &anchor / *alias al YAML este gestionat de schema implicită a js-yaml. O valoare definită o dată și referită de două ori face călătoria dus-întors la un obiect JSON unde toate referințele dețin valori egale.
  • Fără CDN, fără telemetrie: biblioteca js-yaml.min.js este livrată din aceeași origine ca pagina, astfel încât instrumentul funcționează offline, în spatele proxy-urilor corporative și în medii izolate.

Care sunt aplicațiile comune ale conversiei JSON ↔ YAML?

Pivotarea între JSON și YAML apare frecvent în DevOps, ingineria platformelor și instrumentele API:

  • Manifeste Kubernetes: convertirea unui Deployment, ConfigMap sau HelmRelease YAML în JSON pentru ca un validator intern de politici (Joi, Ajv, OPA Rego) să îl verifice programatic, apoi înapoi în YAML pentru aplicarea în cluster.
  • Fluxuri CI/CD: călătoria dus-întors a unui workflow.yml GitHub Actions prin JSON pentru ca un generator de cod să rescrie matricea sau dependențele joburilor, apoi emiterea YAML-ului curățat pentru PR.
  • Specificații OpenAPI: lipirea unui openapi.json JSON din documentația auto-generată a unui backend și convertirea în openapi.yaml pentru referința editată manual verificată în depozit.

Cum arată un exemplu de călătorie dus-întors JSON ↔ YAML?

Lipind {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} și apăsând CONVERTEȘTE în modul JSON → YAML produce opt linii de YAML indentat cu apiVersion: apps/v1 pe prima linie. Introducând acel YAML înapoi în modul YAML → JSON cu Printare frumoasă activată returnează obiectul original octet cu octet după un JSON.stringify(value, null, 2) stabil, cu ordinea cheilor păstrată deoarece schema implicită a js-yaml onorează ordinea inserării în ambele direcții.

Acest convertor JSON ↔ YAML rulează complet în browserul meu?

Da. Fiecare parsare, transformare și emitere rulează local ca JavaScript în fila browserului tău. Biblioteca js-yaml inclusă este livrată din aceeași origine ca pagina — fără CDN, fără fetch, fără XMLHttpRequest, fără navigator.sendBeacon pe intrare. Instrumentul funcționează și offline după încărcarea paginii, deoarece este un pachet static HTML/CSS/JS cu biblioteca vendor copiată alături. Secretele Kubernetes, sarcinile JWT, YAML-urile CloudFormation semnate și configurările proprietare rămân pe dispozitivul tău.

Cum gestionează convertorul YAML-ul multi-document?

YAML suportă mai multe documente într-un singur flux, separate prin linii care conțin doar ---. La YAML → JSON, convertorul apelează jsyaml.loadAll, care returnează fiecare document ca o valoare JavaScript. Dacă se găsește exact un document, ieșirea JSON este acel document direct; dacă se găsesc două sau mai multe, ieșirea JSON este un tablou. La JSON → YAML, când intrarea este un tablou JSON ȘI comutatorul Multi-document este activat, fiecare element al tabloului este emis ca propriul document cu separatoare --- între ele — util pentru generarea unui pachet compatibil cu kubectl apply dintr-un tablou JSON de resurse.

Sunt suportate ancorele și aliasurile YAML?

Da — definițiile &anchor și referințele *alias sunt rezolvate de schema implicită a js-yaml în timpul pasului de încărcare. O intrare YAML precum defaults: &d retries: 3 timeout: 30 job_a: <<: *d job_b: <<: *d se parsează la un obiect JSON unde job_a și job_b conțin ambele retries: 3, timeout: 30. Cheia de îmbinare << (o extensie YAML 1.1 pe care js-yaml încă o onorează) este, de asemenea, suportată pe schema implicită.

Sunt păstrate comentariile YAML la convertirea în JSON și înapoi?

Nu — js-yaml elimină comentariile în timpul pasului de parsare, astfel încât o călătorie dus-întors YAML → JSON → YAML va pierde fiecare linie prefixată cu #. Aceasta este o limitare cunoscută a modelului load/dump; dacă păstrarea comentariilor este critică, folosește o bibliotecă care ține cont de comentarii, precum pachetul npm yaml (care livrează o API CST + AST concepută pentru a păstra trivia) în loc de js-yaml. Pentru majoritatea fluxurilor de conversie a configurațiilor, compromisul este acceptabil: YAML-ul convertit dus-întors păstrează fiecare cheie, valoare, ancoră și alias, doar fără comentariile scrise de oameni.

Ce se întâmplă cu etichetele YAML personalizate?

Convertorul folosește DEFAULT_SCHEMA al js-yaml, care înțelege !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary și !!timestamp — fiecare etichetă din schemele de bază și JSON ale YAML 1.2. Etichetele personalizate sau specifice aplicației (de exemplu, !Ref în CloudFormation, !vault în Ansible) nu sunt recunoscute și generează o eroare clară care citează eticheta nesuportată. Pentru CloudFormation în mod specific, folosește fluxul aws cloudformation package + --output-template-file pentru a extinde etichetele personalizate înainte de a le lipi în acest convertor.

Acest convertor JSON ↔ YAML livrează js-yaml@4.1.0 inclus la aceeași origine, suportă fluxuri multi-document și ancore/aliasuri din cutie și raportează erorile de parsare YAML cu linie și coloană pentru a putea corecta sursa. Fără încărcare, fără CDN, fără telemetrie — fiecare octet rămâne în browserul tău.