← Ҳамаи асбобҳо

Мубаддилкунандаи JSON ба YAML

JSON-ро ба YAML ва баръакс дарҳол дар браузери худ табдил диҳед. Танҳо маҳаллӣ ва хусусӣ, бо шарҳҳо оид ба комментҳо, навъҳо ва фосилагузорӣ.

JSON-ро ба YAML ва YAML-ро ба JSON дар браузери худ табдил диҳед

JSON ва YAML ҳамон навъи маълумотро тавсиф мекунанд — харитаҳои дарунлона, рӯйхатҳо, сатрҳо, рақамҳо ва буливҳо — аммо онҳо хеле гуногун менамоянд ва дар ҷойҳои гуногун истифода мешаванд. Агар шумо ягон вақтро дар назди API-ҳо, файлҳои контейнер ё лӯлаҳои CI гузаронед, дар ниҳоят шумо бояд яке ба дигаре табдил диҳед. Ин саҳифа он табдилро дар ҳарду самт, комилан дар дохили браузери шумо иҷро мекунад, бинобар ин маълумоте, ки шумо мечаспонед, ҳеҷ гоҳ мошини шуморо тарк намекунад.

Қавсайнҳои абстрактии рӯшноӣ ба қабатҳои тоза ва бо фосилагузории муайяншудаи танзимот дар заминаи торик-нилобӣ табдил меёбанд
Сохтори JSON ба YAML-и бар асоси фосилагузорӣ кушода мешавад.

JSON чист ва дар куҷо зиндагӣ мекунад

JSON (JavaScript Object Notation) формати сахт ва бар асоси қавс ва скобка аст, ки аввал барои мошинҳо сохта шудааст. Ҳар объект дар {} печонида мешавад, ҳар массив дар [], калидҳо ва арзишҳои сатр дар нохунакҳои дугона гузошта мешаванд ва ашё бо вергул ҷудо мешаванд. Он формати пешфарзи интиқол барои API-ҳои REST ва GraphQL, ҷисми аксари вебхукҳо, шакли ҳуҷҷатҳои NoSQL ва чизе, ки даъвати fetch-и шумо бармегардонад, мебошад. Қариб ҳар забон онро ба таври пешфарз таҳлил мекунад, ки маҳз ба ҳамин сабаб он қабати API-ро ғолиб омад: JSON.parse дар JavaScript, json дар китобхонаи стандартии Python ва муодилҳо дар ҳама ҷои дигар. Муросо ин аст, ки JSON барои навиштани дастӣ пурбор аст ва шарҳҳоро манъ мекунад, бинобар ин он формати сустест барои файлҳое, ки инсон тамоми рӯз таҳрир мекунад.

YAML чист ва дар куҷо зиндагӣ мекунад

YAML (YAML Ain't Markup Language) барои афзалияти баръакс сохта шудааст: аввал инсонҳо. Он скобаҳо ва нохунакҳоро мепартояд, фосилагузориро барои ифодаи дарунлонагӣ истифода мебарад ва ба шумо имкон медиҳад бо # шарҳ нависед. Ин хониш маҳз сабаби он аст, ки он забони муштараки танзимот гардид. Файлҳои Docker Compose, манифестҳои Kubernetes, гардишҳои корҳои GitHub Actions ва GitLab CI, playbook-ҳои Ansible ва беҳисоб файлҳои танзими барнома ҳама YAML мебошанд. Ҳуҷҷати муқаррарии YAML ба таври намоён кӯтоҳтар аз JSON-и муодил аст ва хеле осонтар барои муқоиса дар дархости кашиш аст. Нархи он зебоӣ шикастпазирӣ аст, ки маҳз дар он ҷо табдил ҷолиб мешавад.

Фарқиятҳои муҳиме, ки аҳамият доранд

Се фарқият қариб ҳар қарори табдилро идора мекунанд. Аввал, фазои холӣ дар YAML муҳим аст ва дар JSON бемаъно. YAML фосилаҳо — ҳеҷ гоҳ табуляторҳо — барои ифодаи сохтор истифода мебарад, бинобар ин як фосилаи нобаробар метавонад маънои ҳуҷҷатро бесадо тағйир диҳад. JSON аслан ба дарунлонагӣ аҳамият намедиҳад. Дуюм, YAML шарҳҳоро дастгирӣ мекунад ва JSON не. Ҳар шарҳи # дар YAML вақте ки шумо JSON тавлид мекунед, танҳо нест мешавад, зеро ҷойе барои гузоштани он вуҷуд надорад. Сеюм, YAML навъгузории зиёдтар ва зимнӣ дорад. Он бо хушнудӣ санаҳо, вақтнишонҳо ва null-ро дар якчанд имло мехонад ва навъҳоро аз арзишҳои бенохунак тахмин мекунад. JSON маҷмӯи хурд ва равшани навъ дорад ва ҳеҷ норавшанӣ надорад. Инчунин қайд кунед, ки JSON аз ҷиҳати техникӣ зермаҷмӯаи YAML 1.2 аст, ки маҳз сабаби он ки JSON-и эътимодӣ одатан бо тозагӣ ҳамчун YAML таҳлил мешавад, аммо баръакс кафолат дода намешавад.

Дарахти маълумоти дарунлона дар байни ду формати сохтории дурахшон бо кабуд ва тиллоӣ табдил меёбад
Ҳамон дарахти маълумот бо ду формат ифода шудааст.

Мушкилиҳои табдил, ки бояд эҳтиёт бошед

Сафари даврӣ на ҳамеша бетафлот аст ва донистани он ки чиз мешикананд, арзиш дорад:

  • Мушкилии Норвегия. Тибқи қоидаҳои YAML 1.1, NO-и бенохунак ҳамчун булив false таҳлил мешавад ва yes, on ва off низ ба булив табдил меёбанд. Коди кишвар ё нишонаи тугма метавонад пеш аз он ки шумо пай баред, ба true/false табдил ёбад. Арзишҳоеро, ки ба назар сатр доред, дар нохунак гузоред.
  • Маҷбурсозии рақам. Версияе ба монанди 3.10 метавонад сифри охиринашро гум кунад ва ба 3.1 табдил ёбад ва 1.0 ҳатто вақте ки шумо матн хостед, ба рақам табдил меёбад. Сатрҳои версия ва идентификаторҳоро дар нохунак гузоред.
  • Лангарҳо ва алтернативаҳо нест мешаванд. Истиноди &anchor ва *alias-и YAML ҳеҷ муодили JSON надорад. Мубаддили хуб онҳоро ба арзиши пурраи худ густариш медиҳад, бинобар ин маълумот дуруст аст, аммо коҳиши такрор гум мешавад — JSON ба YAML ба JSON лангарҳои аслиро аз нав насозад.
  • Шарҳҳо ва скалярҳои блок. Шарҳҳо ҳангоми рафтан ба JSON партофта мешаванд. Скалярҳои блоки бисёрсатра (| ва >) ба сатрҳои муқаррарии JSON бо гурезаи \n печонида мешаванд, бинобар ин нияти форматкунии визуалӣ гум мешавад.
  • Дарунлонагӣ ҳангоми баргаштан ба YAML. JSON дарунлонагиро рамз намекунад, бинобар ин мубаддил услуби мутобиқеро интихоб мекунад. Онро пеш аз часпондан ба абзори ҳассос ба табулятор баррасӣ кунед.

Чаро танҳо-маҳаллӣ будан аҳамият дорад

Файлҳои танзимот ва борҳои API маҳз ҳамон навъ чизест, ки набояд ба сервери тасодуфӣ бор карда шавад: онҳо аксар вақт номи мизбон, токенҳо, номҳои хидмати дохилӣ ё маълумоти муштариро дар бар мегиранд. Ин мубаддил қадами таҳлил-ва-тавлидро дар браузери шумо бо JavaScript иҷро мекунад. Ҳеҷ чиз ба сервер фиристода намешавад, ҳеҷ чиз сабт намешавад ва абзор пас аз бор шудани саҳифа офлайн кор мекунад. Розии Kubernetes ё гардиши кории CI-ро бо боварии он ки он дар мошини шумо мемонад, часпонед.

Ба абзорҳои марбут ниёз доред? Маҷмӯи пурраи мубаддилони маълумот-ро аз назар гузаронед, вуруди номураттабро бо форматкунандаи JSON тоза кунед ва ҳар вақте ки шумо бояд дар байни ҷаҳони API ва ҷаҳони танзимот ҳаракат кунед, ба ин ҷо баргардед.

Саволҳои маъмул

Оё маълумоти ман ба ҷое бор мешавад?

Не. Табдил комилан дар браузери шумо бо истифодаи JavaScript-и маҳаллӣ сурат мегирад. JSON ё YAML-и шумо ҳеҷ гоҳ ба сервер фиристода намешавад, бинобар ин сирру асрор ва файлҳои танзимот хусусӣ мемонанд.

Чаро арзиши true ё false-и YAML-и ман ногаҳон тағйир ёфт?

YAML 1.1 калимаҳои бенохунак ба монанди yes, no, on ва off-ро ҳамчун булив мешуморад — мушкилии Норвегия. Ҳар арзишеро, ки ба назар сатр доред, дар нохунак печонед, то он ҳамчун матн зинда монад.

Ба шарҳҳои ман ҳангоми табдили YAML ба JSON чӣ мешавад?

JSON ҳеҷ синтаксиси шарҳ надорад, бинобар ин ҳамаи шарҳҳои хэш дар давоми табдил хориҷ мешаванд. Агар шумо бояд ёддоштҳоро нигоҳ доред, нусхаи расмии худро дар YAML нигоҳ доред.

Оё лангарҳо ва алтернативаҳои YAML нигоҳ дошта мешаванд?

Онҳо ба арзишҳои пурраи худ густариш меёбанд, зеро JSON ҳеҷ механизми истинод надорад. Маълумот дуруст мемонад, аммо коҳиши такрор вақте ки шумо баргашта ба YAML табдил медиҳед, барқарор карда намешавад.

Оё метавонам ҳам JSON-ро ба YAML ва ҳам YAML-ро ба JSON табдил диҳам?

Бале, абзор дар ҳарду самт кор мекунад. JSON-ро часпонед, то YAML гиред ё YAML-ро часпонед, то JSON гиред ва мубаддил формати дигарро муайян ва тавлид мекунад.

Чаро YAML вақте ки табулятор истифода мебарам мешиканад?

YAML барои дарунлонагӣ фосилаҳоро талаб мекунад ва табуляторро рад мекунад. Агар часпондан таҳлил нашавад, аломатҳои табуляторро бо фосилаҳо иваз кунед ва дарунлонагиро мутобиқ нигоҳ доред.