← Բոլոր գործիքները

JSON-ից YAML փոխարկիչ

Փոխարկեք JSON-ը YAML-ի և YAML-ը JSON-ի ակնթարթորեն ձեր բրաուզերում։ Միայն տեղում և մասնավոր, ծանոթագրությունների, տիպերի, նահանջների և anchor-ների նշումներով։

Փոխարկեք JSON-ը YAML-ի և YAML-ը JSON-ի՝ ձեր բրաուզերում

JSON-ը և YAML-ը նկարագրում են նույն տեսակի տվյալները — ներդրված քարտեզներ, ցանկեր, տողեր, թվեր և բուլյան արժեքներ — բայց դրանք տարբեր տեսք ունեն և օգտագործվում են տարբեր վայրերում։ Եթե ժամանակ եք անցկացնում API-ների, կոնտեյների ֆայլերի կամ CI գործընթացների մոտ, ի վերջո ձեզ հարկավոր է լինում մեկը մյուսի վերածել։ Այս էջն այդ փոխարկումն անում է երկու ուղղություններով, ամբողջությամբ ձեր բրաուզերում, այնպես որ ձեր տեղադրած տվյալները երբեք չեն հեռանում ձեր մեքենայից։

Աբստրակտ լույսի փակագծեր, որոնք մորֆինգ են անում մաքուր, ներդրված կոնֆիգուրացիայի շերտերի մուգ մանուշակագույն ֆոնի վրա
JSON կառուցվածքը բացվում է ինդենտացիայի վրա հիմնված YAML-ի մեջ։

Ինչ է JSON-ը և որտեղ է այն ապրում

JSON-ը (JavaScript Object Notation) խիստ, փակագծերով և ուղիղ փակագծերով ֆորմատ է, կառուցված նախևառաջ մեքենաների համար։ Ամեն օբյեկտ փաթեթավորված է {}-ի մեջ, ամեն զանգված՝ []-ի, բանալիներն ու տողային արժեքները կրկնակի չակերտների մեջ են, և տարրերն առանձնացվում են ստորակետերով։ Այն REST և GraphQL API-ների կանխադրված փոխադրման ֆորմատն է, webhook-ների մեծ մասի մարմինը, NoSQL փաստաթղթերի ձևը, և ձեր fetch կանչի վերադարձնող բանը։ Գրեթե ամեն լեզու այն վերլուծում է հենց այնպես, և հենց դա էլ պատճառն է, թե ինչու հաղթեց API շերտում. JSON.parse JavaScript-ում, json Python-ի ստանդարտ գրադարանում, և համարժեքներ ամենուր։ Փոխզիջումն այն է, որ JSON-ը ձեռքով գրելու համար ծանրաշարժ է և արգելում է մեկնաբանություններ, ուստի այն վատ ֆորմատ է ֆայլերի համար, որոնք մարդն ամբողջ օրը խմբագրում է։

Ինչ է YAML-ը և որտեղ է այն ապրում

YAML-ը (YAML Ain't Markup Language) նախագծված է հակառակ առաջնահերթությամբ. մարդիկ առաջինը։ Այն նետում է փակագծերն ու չակերտները, օգտագործում ինդենտացիա՝ ներդրվածությունն արտահայտելու համար, և թույլ է տալիս գրել մեկնաբանություններ #-ով։ Հենց այդ ընթեռնելիությունն է, որ այն դարձրեց կոնֆիգուրացիայի ընդհանուր լեզուն։ Docker Compose ֆայլերը, Kubernetes մանիֆեստները, GitHub Actions և GitLab CI աշխատանքային հոսքերը, Ansible playbook-ները, և անհամար հավելվածների կոնֆիգուրացիայի ֆայլերը բոլորն էլ YAML են։ Բնորոշ YAML փաստաթուղթը նկատելիորեն ավելի կարճ է, քան համարժեք JSON-ը, և շատ ավելի հեշտ է diff անել pull request-ում։ Այդ էլեգանտության գինը փխրունությունն է, և հենց այստեղ է փոխարկումը հետաքրքիր դառնում։

Հիմնական տարբերությունները, որ նշանակություն ունեն

Երեք տարբերություն է կառավարում գրեթե ամեն փոխարկման որոշում։ Առաջինը, YAML-ում բացատը նշանակալի է, իսկ JSON-ում՝ ոչ։ YAML-ն օգտագործում է բացատներ — երբեք tab-եր — կառուցվածքը ցույց տալու համար, ուստի մեկ սխալ դասավորված բացատը կարող է լուռ փոխել փաստաթղթի իմաստը։ 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-ը դառնում է թիվ, նույնիսկ երբ ցանկանում էիք տեքստ։ Մեջբերեք տարբերակների տողերն ու ID-ները։
  • Ագռավնացույցեր և կեղծանուններ վերանում են։ YAML-ի &anchor և *alias հղումները JSON-ում համարժեք չունեն։ Լավ փոխարկիչը դրանք ընդարձակում է իրենց լիարժեք արժեքին, ուստի տվյալները ճիշտ են, բայց կրկնությունների վերացումն անհետացած է — JSON-ից YAML-ից JSON-ը չի վերականգնի բնօրինակ ագռավնացույցերը։
  • Մեկնաբանություններ և բլոկային սկալյարներ։ Մեկնաբանությունները նետվում են JSON-ի անցնելիս։ Բազմատող բլոկային սկալյարները (| և >) կուտակվում են սովորական JSON տողերի մեջ \n փախման նշաններով, ուստի տեսողական ձևակերպման մտադրությունը կորած է։
  • Ինդենտացիա, YAML-ին վերադառնալիս։ JSON-ը ինդենտացիա չի կոդավորում, ուստի փոխարկիչն ընտրում է հետևողական ոճ։ Վերանայեք այն, մինչև tab-ազգայուն գործիքի մեջ տեղադրելը։

Ինչու է կարևոր, որ միայն տեղական լինի

Կոնֆիգուրացիայի ֆայլերն ու API ծանրաբեռնվածությունները հենց այն տեսակի բան են, որ չպետք է վերբեռնվեն պատահական սերվեր. հաճախ դրանք կրում են host անուններ, token-ներ, ներքին ծառայությունների անուններ, կամ հաճախորդի տվյալներ։ Այս փոխարկիչը վերլուծության և ստեղծման քայլը կատարում է ձեր բրաուզերում՝ JavaScript-ով։ Ոչինչ չի ուղարկվում backend, ոչինչ չի գրանցվում, և գործիքն աշխատում է offline, երբ էջը բեռնվել է։ Տեղադրեք Kubernetes գաղտնիք կամ CI աշխատանքային հոսք՝ վստահ լինելով, որ մնում է ձեր մեքենայում։

Ձեզ հարկավո՞ր է հարակից գործիքներ։ Դիտեք մեր տվյալների փոխարկիչների ամբողջ հավաքածուն, մաքրեք խառնաշփոթ մուտքագրումը JSON ձևակերպիչով, և վերադարձեք այստեղ, երբ պետք է շարժվել API աշխարհի և կոնֆիգուրացիայի աշխարհի միջև։

Հաճախ տրվող հարցեր

Իմ տվյալները վերբեռնվու՞մ են ինչ-որ տեղ։

Ոչ։ Փոխարկումն ամբողջությամբ կատարվում է ձեր բրաուզերում՝ տեղական JavaScript-ի միջոցով։ Ձեր JSON-ը կամ YAML-ը երբեք չեն ուղարկվում սերվեր, ուստի գաղտնիքներն ու կոնֆիգուրացիայի ֆայլերը մնում են գաղտնի։

Ինչու՞ իմ YAML-ի true կամ false արժեքն անսպասելիորեն փոխվեց։

YAML 1.1-ը չմեջբերված բառերը, ինչպիսիք են yes, no, on, և off, վերաբերվում է որպես բուլյան արժեքներ — Նորվեգիայի խնդիրը։ Փաթեթավորեք ցանկացած արժեք, որ ցանկանում եք տողի տեսքով, չակերտների մեջ, որպեսզի այն վերապրի փոխարկումն որպես տեքստ։

Ի՞նչ է պատահում իմ մեկնաբանություններին, երբ YAML-ը JSON եմ փոխարկում։

JSON-ը մեկնաբանության շարահյուսություն չունի, ուստի բոլոր hash մեկնաբանությունները հեռացվում են փոխարկման ընթացքում։ Եթե ձեզ հարկավոր է պահպանել նշումները, պահեք ձեր հեղինակավոր պատճենը YAML-ում։

YAML-ի ագռավնացույցերն ու կեղծանունները պահպանվու՞մ են։

Դրանք ընդարձակվում են իրենց լիարժեք արժեքին, քանի որ JSON-ը հղումային մեխանիզմ չունի։ Տվյալները ճիշտ են մնում, բայց կրկնությունների վերացումը հնարավոր չէ վերականգնել, երբ հետ YAML եք փոխարկում։

Կարո՞ղ եմ JSON-ը YAML-ի, ինչպես նաև YAML-ը JSON-ի փոխարկել։

Այո, գործիքն աշխատում է երկու ուղղություններով։ Տեղադրեք JSON՝ YAML ստանալու համար, կամ տեղադրեք YAML՝ JSON ստանալու համար, և փոխարկիչը հայտնաբերում և ստեղծում է մյուս ֆորմատը։

Ինչու՞ է YAML-ը կոտրվում, երբ tab-եր եմ օգտագործում։

YAML-ը պահանջում է բացատներ ինդենտացիայի համար և մերժում է tab-երը։ Եթե տեղադրումը ձախողվում է, փոխարինեք tab նիշերը բացատներով և պահեք հետևողական ինդենտացիա։