← Gbogbo irinṣẹ

Olùyípadà JSON sí YAML

Yí JSON padà sí YAML àti YAML padà sí JSON lẹ́sẹ̀kẹsẹ̀ nínú aṣàwárí rẹ. Ní àdúgbò nìkan àti àṣírí, pẹ̀lú àlàyé lórí ọ̀rọ̀ àsọyé, onírúurú, àti ìtọ́ka.

Yí JSON padà sí YAML àti YAML padà sí JSON nínú aṣàwakiri rẹ

JSON àti YAML ń ṣàpèjúwe irú dátà kan náà — àwọn map tí a fi sínú ara wọn, àkójọ, ọ̀rọ̀, nọ́mbà, àti ìdáhùn tòótọ́ — ṣùgbọ́n wọ́n dà bí ẹni pé wọ́n yàtọ̀ gan-an síra, a sì ń lò wọ́n ní ibi tí ó yàtọ̀. Bí o bá ń lo àkókò kankan nítòsí API, fáìlì apótí (container), tàbí ìlà CI, o máa nílò láti yí ọ̀kan padà sí èkejì láìpẹ́. Ojú-ìwé yìí ń ṣe yíyí padà náà ní ọ̀nà méjèèjì, pátápátá nínú aṣàwakiri rẹ, nítorí náà dátà tí o lẹ̀ kì í kúrò lórí ẹ̀rọ rẹ rárá.

Àwọn àmì àyọ́kà ìmọ́lẹ̀ fífẹ̀-jálè tí ń yí padà sí ìpele ètò tí a fi ààlà sí lórí ìran aláwọ̀ indigo dúdú
Ìrísí JSON tí ń tú sílẹ̀ di YAML tí a fi ààlà sí.

Kí ni JSON àti níbi tí ó ti ń gbé

JSON (JavaScript Object Notation) jẹ́ ọ̀nà tí ó le, tí ó ní àkámọ́ àti àmì-àyọ́kà, tí a kọ́ fún ẹ̀rọ ní àkọ́kọ́. Ohun kọ̀ọ̀kan wà nínú {}, àkójọ kọ̀ọ̀kan wà nínú [], àwọn bọ́tìnì àti iye ọ̀rọ̀ ni a fi àmì àyọ́kà méjì sí, àwọn ohun kọ̀ọ̀kan sì ni kọ́mà ń pín sí ara wọn. Ó jẹ́ ọ̀nà ìpilẹ̀ fún àwọn API REST àti GraphQL, ara ọ̀pọ̀lọpọ̀ webhooks, ìrísí àwọn àkọsílẹ̀ NoSQL, àti ohun tí fetch call rẹ ń dá padà. Fẹ́rẹ̀ẹ́ jẹ́ gbogbo èdè ni ó ń ka a láìsí ìpọ́nlé, ìdí gan-an ni ó fi borí ní ẹ̀gbẹ́ API: JSON.parse nínú JavaScript, json nínú ilé-ìkówèésí Python, àti irú bẹ́ẹ̀ ní ibi gbogbo. Owó tí a máa san ni pé JSON gùn láti fọwọ́ kọ, kò sì gba àwọn ọ̀rọ̀-àsọyé (comments), nítorí náà kò dára fún fáìlì tí ènìyàn ń ṣàtúnṣe rẹ̀ ní ojoojúmọ́.

Kí ni YAML àti níbi tí ó ti ń gbé

A ṣe YAML (YAML Ain't Markup Language) fún ohun tí ó dojúkọ ìdìkejì: ènìyàn ní àkọ́kọ́. Ó ń kúrò lára àkámọ́ àti àmì àyọ́kà, ó ń lo ìlà ààlà láti fi hàn ìtẹ́lẹ̀-orí, ó sì ń jẹ́ kí o kọ ọ̀rọ̀-àsọyé pẹ̀lú #. Ìrọ̀rùn kíkà yẹn ni ó fi jẹ́ èdè gbogbo àgbáyé fún ètò. Àwọn fáìlì Docker Compose, àwọn ìwé Kubernetes, àwọn ìṣiṣẹ́ GitHub Actions àti GitLab CI, àwọn Ansible playbooks, àti ẹgbẹẹgbẹ̀rún fáìlì ètò app ni gbogbo wọn jẹ́ YAML. Ìwé YAML lásán máa ń kúrú ju JSON kan náà lọ ní pàtàkì, ó sì rọrùn ju láti fi wé ìyàtọ̀ nínú pull request. Owó tí a máa san fún ẹwà náà ni àìlágbára, ibi tí yíyí padà ti ń di ohun tí ó fani mọ́ra.

Àwọn ìyàtọ̀ pàtàkì tí ó ṣe pàtàkì

Ìyàtọ̀ mẹ́ta ni ó ń darí fẹ́rẹ̀ẹ́ gbogbo ìpinnu yíyí padà. Àkọ́kọ́, àyè òfìfo ṣe pàtàkì nínú YAML kò sì ní ìtumọ̀ nínú JSON. YAML ń lo àyè òfìfo — kì í ṣe tabs rárá — láti fi hàn ìrísí, nítorí náà àyè kan tí ó kù léèwọ̀ lè yí ìtumọ̀ ìwé kan padà láìfẹ̀sọ́nà. JSON kò ṣàníyàn nípa ìtẹ́lẹ̀-orí rárá. Èkejì, YAML ń gba ọ̀rọ̀-àsọyé, JSON kò gbà. Ọ̀rọ̀-àsọyé # èyíkéyìí nínú YAML ń pòórá lásán nígbà tí o bá ṣe JSON, nítorí pé kò sí ibi tí a lè fi sí. Ẹ̀kẹta, YAML ní iru dátà tí ó ju ti JSON lọ, tí kò sì hàn ní gbangba. Ó ń ka déètì, àkókò, àti null ní ọ̀nà kíkọ ọ̀tọ̀ọ̀tọ̀ láìṣòro, ó sì ń fojú-inú-wọ́ iru dátà láti inú iye tí a kò fi àmì àyọ́kà sí. JSON ní àkójọ iru dátà kékeré tí ó hàn ní gbangba láìsí ìṣiyèméjì. Ṣàkíyèsí pé JSON jẹ́ ọ̀kan lára àwọn ọ̀nà YAML 1.2 ní ti gidi, ìdí gan-an ni JSON tí ó tọ́ fi máa ń ka dáradára gẹ́gẹ́ bí YAML, ṣùgbọ́n òdìkejì rẹ̀ kì í rí bẹ́ẹ̀ nígbà gbogbo.

Igi dátà tí a fi sínú ara wọn tí ń yí padà láàrin ìrísí méjì tí ń dán ní aláwọ̀ cyan àti wúrà
Igi dátà kan náà tí a fi hàn ní ọ̀nà méjì.

Àwọn ìdẹ̀kùn yíyí padà tí ó tọ́ láti ṣọ́ra fún

Ìrìnàjò ìlọ-àti-padà kì í ṣàìdẹ̀kùn nígbà gbogbo, ó sì tọ́ láti mọ̀ ibi tí ó ti lè bàjẹ́:

  • Ìṣòro Norway. Lábẹ́ ìlànà YAML 1.1, NO tí a kò fi àmì àyọ́kà sí ń kà bí ìdáhùn tòótọ́ false, yes, on, àti off sì di ìdáhùn tòótọ́ pẹ̀lú. Àmì orílẹ̀-èdè tàbí àmì ìyípadà lè yí padà sí true/false kí o tó ṣàkíyèsí. Fi àmì àyọ́kà sí àwọn iye tí o fẹ́ kí ó jẹ́ ọ̀rọ̀.
  • Ìyípadà nọ́mbà. Ẹ̀yà bí i 3.10 lè pàdánù òdo tí ó wà lẹ́yìn rẹ̀ kí ó sì di 3.1, 1.0 sì di nọ́mbà pàápàá nígbà tí o fẹ́ ọ̀rọ̀. Fi àmì àyọ́kà sí àwọn ẹ̀yà àti ID.
  • Anchors àti aliases ń pòórá. Àwọn ìtọ́ka YAML &anchor àti *alias kò ní ìdọ́gba nínú JSON rárá. Ohun èlò yíyí padà tí ó dára ń fẹ́ wọn sí iye pípé wọn, nítorí náà dátà náà tọ́ ṣùgbọ́n ìdín-àdàkọ-kù náà ti lọ — JSON sí YAML sí JSON kì yóò tún àwọn anchors ìpilẹ̀ṣẹ̀ kọ́.
  • Ọ̀rọ̀-àsọyé àti block scalars. A ń jù ọ̀rọ̀-àsọyé sílẹ̀ nígbà tí a bá lọ sí JSON. Àwọn block scalars ọ̀pọ̀lọpọ̀-ìlà (| àti >) ń dín pọ̀ di ọ̀rọ̀ JSON lásán pẹ̀lú àmì \n, nítorí náà ète ìrísí wíwo ti lọ.
  • Ìtẹ́lẹ̀-orí nígbà tí a bá padà sí YAML. JSON kò fi ìtẹ́lẹ̀-orí kọ, nítorí náà ohun èlò yíyí padà ń yan ọ̀nà tí ó dúró ṣinṣin. Ṣàyẹ̀wò rẹ̀ kí o tó lẹ̀ ẹ́ sínú ohun èlò tí ó ṣe pàtàkì fún tab.

Kí nìdí tí ẹ̀rọ tirẹ nìkan fi ṣe pàtàkì

Àwọn fáìlì ètò àti ẹrù API jẹ́ gan-an irú ohun tí kò yẹ kí a fi ránṣẹ́ sí sáfà àjèjì: wọ́n sábà máa ń gbé orúkọ ẹ̀rọ, àwọn àmì ìdánimọ̀ (tokens), orúkọ iṣẹ́ inú, tàbí dátà oníbàárà. Ohun èlò yíyí padà yìí ń ṣe ìṣírò àti ìtẹ̀jáde nínú aṣàwakiri rẹ pẹ̀lú JavaScript. A kì í fi ránṣẹ́ sí ẹ̀rọ inú (backend), a kì í fi sínú àkọsílẹ̀, ohun èlò náà sì ń ṣiṣẹ́ láìsí íńtánẹ́ẹ̀tì lẹ́yìn tí ojú-ìwé náà ti ṣí. Lẹ̀ àṣírí Kubernetes tàbí ìlà iṣẹ́ CI pẹ̀lú ìdánilójú pé ó ń dúró lórí ẹ̀rọ rẹ.

Ṣé o nílò ohun èlò mìíràn tí ó jọra? Wo gbogbo àwọn ohun èlò yíyí dátà padà wa, mú ohun tí ó dàrú tọ́ pẹ̀lú ohun èlò ìṣàtúnṣe JSON, kí o sì padà wá níhìn-ín nígbàkigbà tí o bá nílò láti lọ láàrin ayé API àti ayé ètò.

Àwọn ìbéèrè tí a sábà máa ń béèrè

Ṣé a ń fi dátà mi ránṣẹ́ sí ibòmíràn?

Rárá. Yíyí padà náà ń ṣẹlẹ̀ pátápátá nínú aṣàwakiri rẹ ní lílo JavaScript tí ó wà lórí ẹ̀rọ tirẹ. A kì í fi JSON tàbí YAML rẹ ránṣẹ́ sí sáfà kankan, nítorí náà àwọn àṣírí àti fáìlì ètò ń dúró ní àṣírí.

Kí nìdí tí iye true tàbí false YAML mi fi yí padà láìròtẹ́lẹ̀?

YAML 1.1 ń fi àwọn ọ̀rọ̀ tí a kò fi àmì àyọ́kà sí bí i yes, no, on, àti off ṣe bí ìdáhùn tòótọ́ — ìṣòro Norway. Fi àmì àyọ́kà sí iye èyíkéyìí tí o fẹ́ kí ó jẹ́ ọ̀rọ̀ kí ó lè yè kúrò nínú yíyí padà gẹ́gẹ́ bí ọ̀rọ̀.

Kí ni ó ń ṣẹlẹ̀ sí ọ̀rọ̀-àsọyé mi nígbà tí mo bá yí YAML padà sí JSON?

JSON kò ní ìlànà ọ̀rọ̀-àsọyé rárá, nítorí náà gbogbo ọ̀rọ̀-àsọyé hash ni a ń yọ kúrò nígbà yíyí padà. Bí o bá nílò láti pa àwọn àkíyèsí mọ́, pa ẹ̀dà ìdánilójú rẹ mọ́ ní YAML.

Ṣé a ń pa anchors àti aliases YAML mọ́?

A ń fẹ́ wọn sí iye pípé wọn nítorí pé JSON kò ní ẹ̀rọ ìtọ́ka rárá. Dátà náà ń dúró tọ́, ṣùgbọ́n a kò lè gba ìdín-àdàkọ-kù náà padà nígbà tí o bá yí padà sí YAML.

Ṣé mo lè yí JSON padà sí YAML àti YAML padà sí JSON?

Bẹ́ẹ̀ni, ohun èlò náà ń ṣiṣẹ́ ní ọ̀nà méjèèjì. Lẹ̀ JSON láti gba YAML, tàbí kí o lẹ̀ YAML láti gba JSON, ohun èlò yíyí padà náà sì ń dá ọ̀nà kejì náà mọ̀ tí ó sì ń mú un jáde.

Kí nìdí tí YAML fi ń bàjẹ́ nígbà tí mo bá lo tabs?

YAML ń béèrè àyè òfìfo fún ìtẹ́lẹ̀-orí, ó sì ń kọ̀ tabs. Bí ìlẹ̀ kan bá kùnà láti kà, fi àyè òfìfo rọ́pò àmì tab, kí o sì pa ìtẹ́lẹ̀-orí mọ́ dúró ṣinṣin.