← Wonke amathuluzi

Isiguquli se-JSON saya ku-YAML

Guqula i-JSON ibe yi-YAML ne-YAML ibe yi-JSON ngokushesha kubrawuza yakho. Ngokwendawo kuphela futhi kuyimfihlo, namanothi mayelana namazwana, izinhlobo, indent nama-anchor.

Guqula i-JSON ibe i-YAML kanye ne-YAML ibe i-JSON kusiphequluli sakho

I-JSON ne-YAML zichaza uhlobo olufanayo ledatha — amamephu afakwe ndawonye, izinhlu, imibhalo, izinombolo, kanye nama-boolean — kodwa zibukeka zihluke kakhulu futhi zisetshenziswa ezindaweni ezihlukene. Uma uchitha isikhathi eduze nama-API, amafayela ezitsha (containers), noma ama-pipeline e-CI, ekugcineni udinga ukuguqula elinye libe elinye. Leli khasi lenza lokho kuguqulwa kokubili izindlela, ngokugcwele ngaphakathi kusiphequluli sakho, ngakho idatha oyinamathisela ayikaze iphume emshini wakho.

Amabhukethi angacacile okukhanya aguquka abe izingqimba zokucushwa ezihleliwe ngokucacile ngasemuva okumpunga okumnyama
Isakhiwo se-JSON sivuleka sibe i-YAML esekelwe ekuhleleni.

Yini i-JSON nokuthi ihlala kuphi

I-JSON (JavaScript Object Notation) ifomethi eqinile, egcwele amabhukethi neziphawu, eyakhelwe imishini kuqala. I-objekthi ngayinye igoqwe ku-{}, i-array ngayinye ku-[], ama-key namavelu ombhalo ayabekwa amakhwoteshini amabili, kanti izinto zihlukaniswa ngamakhefu. Iyifomethi yemvelo yewaya yama-API e-REST ne-GraphQL, umzimba wama-webhook amaningi, isakhiwo samadokhumenti e-NoSQL, kanye nento ekhutshwa ucingo lwakho lwe-fetch. Cishe lonke ulimi luyihlaziya ngokuzenzakalela, okuyisona sizathu sokuthi kungani yanqoba isendlalelo se-API: i-JSON.parse ku-JavaScript, i-json emtapweni ojwayelekile we-Python, kanye nokulinganayo endaweni yonke. Inzuzo iwukuthi i-JSON inde ukuyibhala ngesandla futhi ivimbela amazwana, ngakho ayiyona ifomethi enhle yamafayela umuntu awahlelayo usuku lonke.

Yini i-YAML nokuthi ihlala kuphi

I-YAML (YAML Ain't Markup Language) yaklanywa ngenhloso ephambene: abantu kuqala. Iyabalekela amabhukethi namakhwoteshini, isebenzisa ukuhlela (indentation) ukuveza ukuhlanganiswa ngaphakathi, futhi ikuvumela ukuthi ubhale amazwana nge-#. Leyo kufundeka kalula yisona sizathu sokuthi kungani yaba ulimi oluvamile lokucushwa. Amafayela e-Docker Compose, ama-manifest e-Kubernetes, ama-workflow e-GitHub Actions ne-GitLab CI, ama-playbook e-Ansible, kanye namafayela amaningi okucushwa kwe-app konke kuyi-YAML. Idokhumenti evamile ye-YAML imfushane kakhulu kunento ejwayelekile ye-JSON futhi kulula kakhulu ukuqhathanisa (diff) kusicelo sokuhlanganisa (pull request). Intengo yaleyo mfaneleko wukungathembeki, lapho ukuguqula kuvela khona kuyakuthakazelisa.

Imehluko emithathu ebalulekile

Imehluko emithathu iqhuba cishe zonke izinqumo zokuguqula. Okokuqala, indawo engenalutho ibalulekile ku-YAML futhi ayibalulekile ku-JSON. I-YAML isebenzisa izikhala — hhayi amathebhu neze — ukuveza ukwakheka, ngakho indawo eyodwa engalungile ingashintsha ngokuthula incazelo yedokhumenti. I-JSON ayikhathaleli ukuhlela nhlobo. Okwesibili, i-YAML isekela amazwana futhi i-JSON ayikwenzi lokho. Noma yiliphi izwana le-# ku-YAML linyamalala nje lapho ukhiqiza i-JSON, ngoba akukho lapho lingafakwa khona. Okwesithathu, i-YAML inobuhlobo bedatha obungenqabile futhi obucacile ngokuqondile. Ifunda kalula amadethi, izikhathi, kanye ne-null ngezindlela eziningana zokupela, futhi iqagela ubuhlobo kusuka kumavelu angenakhwoteshini. I-JSON inobuhlobo bedatha obuncane, obucacile futhi obungenayo inkinga. Qaphela futhi ukuthi i-JSON ubuchwepheshe iyingxenye ye-YAML 1.2, okuyisona sizathu sokuthi kungani i-JSON esebenzayo ihlala ihlaziyeka kahle njenge-YAML, kodwa okuphambene akuqinisekisiwe.

Uhlaka lwedatha olufakwe ndawonye luguqula phakathi kwamafomethi amabili akhiyiwe akhanyayo ngokuluhlaza okwesibhakabhaka negolide
Idatha efanayo ichazwa ngamafomethi amabili.

Izinkinga zokuguqula okufanele uqaphele

Uhambo oluphindwe kabili aluhlale lungalahlekelwa lutho, futhi kuyasiza ukwazi lapho izinto zihluleka khona:

  • Inkinga yase-Norway. Ngaphansi kwemithetho ye-YAML 1.1, u-NO ongenamkhwoteshini uhlaziywa njenge-boolean false, kanti yes, on, ne-off nazo ziphenduka ama-boolean. Ikhodi yezwe noma igama lokuvula/kuvala lingaguquka libe true/false ngaphandle kokuba uphawulele. Beka amakhwoteshini kumavelu ohlose ukuthi abe imibhalo.
  • Ukugudlwa kwezinombolo. Inguqulo enjenge-3.10 ingalahlekelwa yi-ziro yayo yokugcina iphenduke ibe 3.1, kanti 1.0 iphenduka inombolo ngisho noma ubufuna umbhalo. Beka amakhwoteshini ezinguqulweni namazazisi.
  • Ama-anchor nama-alias ayanyamalala. Izinsalela ze-YAML ze-&anchor ne-*alias azinalutho olulinganayo ku-JSON. Isiguquli esihle sizivula zibe ivelu lazo eliphelele, ngakho idatha ilungile kodwa ukugoqwa kanye (deduplication) kuyanyamalala — ukuguqula i-JSON ibe i-YAML ibuyele ibe i-JSON ngeke kwakhe kabusha ama-anchor okuqala.
  • Amazwana namamodeli abhalwe ngamablogo (block scalars). Amazwana ayashabalala uma uguqula uye ku-JSON. Amamodeli emigqa eminingi (| ne->) awa abe imibhalo evamile ye-JSON enama-escape e-\n, ngakho inhloso yokuhlela okubonakalayo iyalahleka.
  • Ukuhlela lapho ubuyela ku-YAML. I-JSON ayibhali ukuhlela, ngakho isiguquli sikhetha isitayela esiqinile. Buyekeza kuqala ngaphambi kokunamathisela kuthuluzi olusebenza ngamathebhu.

Kungani kwendawo kuphela kubalulekile

Amafayela okucushwa nezinsizakusebenza ze-API kuyinto ekanye engafanele ilayishwe kuseva engaziwa: kaningi kuqukethe amagama amaseva, amathokheni, amagama ezinsizakalo zangaphakathi, noma idatha yamakhasimende. Lesi siguquli senza isinyathelo sokuhlaziya nokukhiqiza kusiphequluli sakho nge-JavaScript. Akukho okuthunyelwa kusizinda, akukho okuqoshwayo, futhi ithuluzi liyasebenza ngisho nangaphandle kwe-inthanethi ngemva kokuba ikhasi selifakiwe. Namathisela imfihlo ye-Kubernetes noma i-workflow ye-CI ngokuqiniseka ukuthi ihlala emshinini wakho.

Udinga amathuluzi ahlobene? Phequlula iqoqo eliphelele lama-zishintshi zedatha zethu, uhlanze okufakwayo okudidayo nge-sishintshi se-JSON, futhi ubuye lapha noma nini lapho udinga ukuhamba phakathi kwezwe le-API nezwe lokucushwa.

Imibuzo evame ukubuzwa

Idatha yami iyalayishwa ndawana thize?

Cha. Ukuguqula kwenzeka ngokugcwele kusiphequluli sakho kusetshenziswa i-JavaScript yendawo. I-JSON noma i-YAML yakho ayikaze ithunyelwe kuseva, ngakho imfihlo namafayela okucushwa ahlala engaziwa.

Kungani ivelu lami le-true noma le-false lishintsha ngokungalindelekile?

I-YAML 1.1 iphatha amagama angenamkhwoteshini afana no-yes, no, on, ne-off njengama-boolean — inkinga yase-Norway. Goga noma yiliphi ivelu ohlose ukuthi libe umbhalo ngamakhwoteshini ukuze lisinde ekuguquleni njengombhalo.

Kwenzekani emazwaneni ami lapho ngiguqula i-YAML ibe i-JSON?

I-JSON ayinasi sakhiwo samazwana, ngakho onke amazwana e-hash ayasuswa ngesikhathi sokuguqula. Uma udinga ukugcina amanothi, gcina ikhophi yakho egunyaziwe ku-YAML.

Ama-anchor nama-alias e-YAML ayagcinwa?

Ayavulwa abe amavelu awo aphelele ngoba i-JSON ayinayo indlela yokubhekisela. Idatha ihlala ilungile, kodwa ukugoqwa kanye akubuyiseleki lapho ubuyela ku-YAML.

Ngingaguqula i-JSON ibe i-YAML kanye ne-YAML ibe i-JSON?

Yebo, ithuluzi lisebenza kokubili izindlela. Namathisela i-JSON ukuthola i-YAML, noma unamathisele i-YAML ukuthola i-JSON, futhi isiguquli sithola futhi sikhiqize elinye ifomethi.

Kungani i-YAML iphuka uma ngisebenzisa amathebhu?

I-YAML idinga izikhala zokuhlela futhi yenqaba amathebhu. Uma ukunamathisela kuhluleka ukuhlaziywa, shintsha izinhlamvu zamathebhu zibe izikhala futhi ugcine ukuhlela kuqhubeka njengokuqhubeka.