Utilia

JSON во YAML претворач

Претворете JSON во YAML и YAML во JSON во прелистувачот, со поддршка за анкери, merge клучеви и датотеки со повеќе документи. Ништо не се качува.

Претворање

Како да го користите претворачот од JSON во YAML

  1. Изберете насока: JSON → YAML или YAML → JSON.
  2. Залепете ги вашите податоци или кликнете Отвори датотека за да вчитате .json, .yaml или .yml датотека (до 10 MB).
  3. Изберете Вовлекување (2 или 4 празни места) и, по желба, Сортирај ги клучевите по азбучен ред.
  4. Кликнете Претвори или само продолжете да пишувате: резултатот се освежува автоматски. Ако внесот е невалиден, пораката за грешка го дава редот и колоната на проблемот.
  5. Копирајте го или преземете го резултатот. Замени насока го праќа излезот назад во внесот за да се претвори во спротивната насока.

JSON и YAML: исти податоци, различна синтакса

YAML во пракса е надмножество на JSON: секој JSON документ опишува податоци што YAML може да ги изрази, а YAML додава полесна синтакса што е полесна за читање и уредување од луѓе. Затоа Kubernetes манифестите, Docker Compose датотеките, GitHub Actions и GitLab CI цевководите, Ansible playbook-овите и OpenAPI спецификациите обично се пишуваат во YAML, додека API и програми разменуваат JSON.

Истите податоци во двата формати:

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

JSON → YAML

Претворачот пишува YAML во блок стил: еден клуч по ред, списоци со цртички и вгнездени објекти вовлечени. Долгите низи никогаш не се прекинуваат, а низите со повеќе реда го користат литералниот стил | за новите редови да се задржат точно. Низите што YAML инаку би ги прочитал како друг тип се ставаат во наводници: "yes", "1.0" или "null" остануваат низи знаци по кружниот пат. Сортирај ги клучевите ги подредува клучевите на секој објект по азбучен ред, што ги прави две конфигурациски датотеки полесни за споредба.

YAML → JSON

YAML се чита со основната шема на YAML 1.2, истите правила што ги користат повеќето современи алатки:

  • true/false, броевите и null (или ~) стануваат JSON вредности; yes, no, on и off остануваат низи знаци, како што бара спецификацијата YAML 1.2.
  • Анкерите и алијасите (&base, *base) се прошируваат, а merge клучевите (<<: *base), чести во CI датотеки, се поддржани.
  • Датотека со повеќе документи одделени со --- станува JSON низа со по еден елемент за секој документ, а порака кажува колку се споени.
  • Коментарите се отфрлаат, бидејќи JSON нема коментари.
  • .inf и .nan немаат JSON еквивалент; се пишуваат како низите "Infinity" и "NaN".

За да го заштитиме вашиот прелистувач од датотеки „billion laughs“, во кои неколку алијаси се прошируваат во милијарди вредности, документ што се проширува на повеќе од милион вредности се одбива.

Вообичаени грешки во YAML

  • Табулатори за вовлекување: YAML дозволува само празни места.
  • Недоследно вовлекување: ставките на ист список или објект мора да почнуваат во иста колона.
  • Недостасува празно место по двоточката: key:value е една низа, додека key: value е пар клуч-вредност.
  • Посебни знаци без наводници: вредност што почнува со @, обратен наводник, *, & или !, или што содржи : или #, мора да биде во наводници.

Често поставувани прашања

Дали мојата датотека се испраќа на сервер?

Не. Претворањето работи во вашиот прелистувач, а вашите конфигурациски датотеки, тајни или API податоци никогаш не го напуштаат вашиот компјутер.

Зошто „yes“ и „no“ не се претвораат во булови вредности?

Од YAML 1.2, само true и false се булови. Постарите парсери на YAML 1.1 ги третирале yes, no, on и off како булови, што го предизвикало познатиот „Norway problem“ (кодот на државата NO прочитан како false). Оваа алатка го следи YAML 1.2.

Дали YAML коментарите се зачувуваат?

Не. JSON нема коментари, па се губат при YAML → JSON. При JSON → YAML можете да додадете коментари на резултатот потоа.

Може ли да претворам Kubernetes датотека со повеќе ресурси?

Да. Секој ресурс одделен со --- станува еден елемент на JSON низа. Претворањето на таа низа назад во YAML дава еден документ што содржи список.

Дали претворачот го менува редоследот на клучевите?

Не, освен ако не штиклирате Сортирај ги клучевите: клучевите го задржуваат редоследот во кој се појавуваат во вашиот внес. Единствениот исклучок доаѓа од самиот JavaScript: клучевите што се цели броеви, како "10" или "2", се ставаат први, по растечки редослед.