JSON sí XML àti padà: ohun èlò yíyí padà tí ó wúlò fún ayé dátà méjì
Ọ̀pọ̀lọpọ̀ àwọn onídàrò (developers) ń bá XML àti JSON méjèèjì ṣiṣẹ́ yálà wọ́n fẹ́ ẹ tàbí kò fẹ́ ẹ. Àwọn API wẹ́ẹ̀bù òde-òní ń sọ̀rọ̀ JSON fẹ́rẹ̀ẹ́ ní gbogbo ìgbà, ṣùgbọ́n ní ìṣẹ́jú tí o bá fọwọ́ kan báńkì, ilé-iṣẹ́ ìdánilójú (insurance), ojú-òpó ìjọba, ERP ilé-iṣẹ́ ńlá, tàbí iṣẹ́ SOAP àtijọ́, XML á hàn padà. Ohun èlò yíyí padà JSON sí XML lórí ojú-ìwé yìí ń yí JSON padà sí XML àti XML padà sí JSON tààrà nínú aṣàwakiri rẹ, nítorí náà o lè lọ láàrin ọ̀nà méjèèjì yìí láìdàwọ́lé ẹrù dátà tí ó ní ìtumọ̀ sínú iṣẹ́ àjèjì.

Kí gan-an ni XML àti JSON
XML (Extensible Markup Language) jẹ́ ọ̀nà àmì tí a kọ́ yíká àwọn àmì (tags) tí a fi sínú ara wọn, àwọn ohun ìní (attributes), àti àwọn orúkọ àyè (namespaces). A ṣe é fún ìwé àti pípín dátà tí a to, ó sì ń gbé ẹ̀rọ púpọ̀: schemas (XSD), namespaces, ìtọ́ni ìṣírò, ọ̀rọ̀-àsọyé, àwọn apá CDATA, àti ìkéde ìlànà lókè. Ọ̀làwọ́ yẹn ni ó fi jẹ́ kí XML ṣì borí nínú àwọn ètò àtijọ́ àti ilé-iṣẹ́ ńlá. O máa rí i nínú àwọn iṣẹ́ wẹ́ẹ̀bù SOAP, àwọn feed RSS àti Atom, àwọn fáìlì ètò (Spring, Maven, .NET app configs), àwọn ọ̀nà ìwé ọ́fíìsì, àti àwọn ìlànà ìránṣẹ́ owó bí SWIFT àti ISO 20022, níbi tí àwọn báńkì àti ilé-iṣẹ́ ìdánilójú ṣì ń pàṣípààrọ̀ XML lójoojúmọ́.
JSON (JavaScript Object Notation) rọrùn ju bẹ́ẹ̀ lọ jìnnà: àwọn ohun tí ó ní bọ́tìnì/iye, àkójọ, ọ̀rọ̀, nọ́mbà, ìdáhùn tòótọ́, àti null. Ó ń bá ìrísí dátà fẹ́rẹ̀ẹ́ gbogbo èdè ìtòlẹ́sẹẹsẹ mu ní ọ̀nà kan-sí-ọ̀kan, ìdí gan-an ni ó fi gba àwọn API wẹ́ẹ̀bù òde-òní, àwọn ibùdó REST, àwọn app fóònù, àti àwọn fáìlì ètò bí i package.json. JSON sábà máa ń kéré ní ìpín 30 sí 50 nínú ọgọ́rùn-ún ju XML tí ó bá a mu lọ, ó sì ń ka lọ́nà tí ó yára ju, apá kan nítorí pé ó ń fi àwọn àmì tíipa àti ẹ̀rọ ohun ìní tí ó ń mú XML gùn sílẹ̀.
Àwọn ìyàtọ̀ pàtàkì tí ó ṣe pàtàkì fún yíyí padà
Ọ̀nà méjèèjì ní ìbámu tó láti bára wọn mu, ṣùgbọ́n kì í ṣe ní ọ̀nà tí ó mọ́ tónítóní. Ìyàtọ̀ ìrísí díẹ̀ ni ó ń fa fẹ́rẹ̀ẹ́ gbogbo ìṣòro:
- Ohun ìní (attributes) àti ọmọ ìlà (child nodes). XML ń fi ìyàtọ̀ sí
<user id="1">(ohun ìní) àti<user><id>1</id></user>(ẹ̀yà ọmọ). JSON kò ní irú èrò bẹ́ẹ̀ rárá, nítorí náà àwọn ohun èlò yíyí padà ń dá ọ̀nà tiwọn. Ní àṣà, ohun ìní ń dí pọ̀ sínú bọ́tìnì bí i@attributestàbí kí a fi@síwájú rẹ̀, nígbà tí ọ̀rọ̀ ẹ̀yà náà ń dé bí i bọ́tìnì bí#text. - Àkójọ (Arrays). JSON ní àkójọ tirẹ̀ láti ìbí. XML kò ní. Àkójọ nínú XML jẹ́ àmì kan náà tí a tún ṣe, bí i àmì
<item>mẹ́ta ní ọ̀nà kan. Àwọn ohun èlò yíyí padà gbọ́dọ̀ fojú-inú-wọ́ ìgbà tí àwọn ẹ̀gbọ́n-àbúrò tí a tún ṣe yẹ kí ó dí pọ̀ di àkójọ JSON, àti ìgbà tí ẹ̀yà kan ṣoṣo yẹ kí ó dúró bí ohun pẹrẹsẹ. - Namespaces. XML ń lo namespaces (àwọn ìṣáájú
xmlns:soap) láti yẹra fún ìjàpọ̀ orúkọ láàrin schemas. JSON kò ní ìdọ́gba kankan, nítorí náà àwọn ìṣáájú náà yálà wọ́n ń yè gẹ́gẹ́ bí àmì gidi nínú bọ́tìnì tàbí a ń yọ wọ́n kúrò. - Gígùn àti àlàyé (metadata). XML lè fi àlàyé kún ìlà kan nípasẹ̀ ohun ìní; JSON ń sọ ohun gbogbo gẹ́gẹ́ bí bọ́tìnì àti iye. Ìyẹn mú kí JSON kéré tí ó sì rọrùn láti kà, nígbà tí XML ń pa agbára ìdánilójú mọ́ nípasẹ̀ schemas XSD.
Àwọn ìdẹ̀kùn yíyí padà tí ó tọ́ láti ṣọ́ra fún
Ìrìnàjò ìlọ-àti-padà JSON sí XML sí JSON àti fífojú-sọ́nà pé àbájáde náà yóò jọra pípé ni àṣìṣe tí ó gbajúmọ̀ jùlọ. Yíyí padà náà máa ń ní ìdẹ̀kùn ní ọ̀nà méjèèjì àyàfi tí o bá ń darí àwọn ìlànà náà fúnra rẹ. Rántí àwọn nǹkan wọ̀nyí:
- Ohun ìní ń bàjẹ́. Nígbà tí o bá yí JSON padà sí XML, ohun èlò náà nílò ìlànà fún bí a ṣe ń pinnu bọ́tìnì tí yóò di ohun ìní àti èyí tí yóò di ẹ̀yà. Nígbà tí o bá lọ ní ọ̀nà mìíràn, ohun ìní gbọ́dọ̀ dé ibì kan, "ibì kan" yẹn (ìṣáájú
@, apá@attributes) sì ń yàtọ̀ láàrin ilé-ìkówèésí (libraries). Bí ẹ̀rọ tí ó ń kà á ní ìsàlẹ̀ bá retí ìlànà mìíràn, dátà náà máa dà bí ohun tí kò tọ́ pàápàá tí kò bá pàdánù ohunkóhun. - Ẹ̀yà kan ṣoṣo padà sí àkójọ. Feed XML tí ó ní
<item>kan ń mú ohun JSON kan jáde; feed kan náà pẹ̀lú ẹ̀yà méjì ń mú àkójọ JSON jáde. Àpèjúwe (code) tí ó fojú-inú-wọ́ àkójọ máa ń bàjẹ́ ní ìṣẹ̀lẹ̀ ẹ̀yà kan ṣoṣo. Èyí jẹ́ orísun àṣìṣe ìtúmọ̀ RSS àti SOAP tí ó gbajúmọ̀. - Namespaces ń jó tàbí kí wọ́n pòórá. Bí ó ti rí ní ohun èlò náà,
soap:Bodylè di bọ́tìnì tí a ń pè ní gan-ansoap:Body, tàbí kí a yọ ìṣáájú náà kúrò pátápátá, èyí tí ó ń yí ìtumọ̀ ìwé náà padà. - Àkóónú tí a dàpọ̀ àti onírúurú. XML ń fi ohun gbogbo hàn gẹ́gẹ́ bí ọ̀rọ̀, nítorí náà iye bí i
truetàbí42lè dúró gẹ́gẹ́ bí ọ̀rọ̀ lẹ́yìn yíyí padà sí JSON, nígbà tí ọ̀nà òdìkejì kò ní ibì kan fún ọ̀rọ̀-àsọyé tàbí CDATA.

Kí nìdí tí yíyí padà ní ẹ̀rọ tirẹ nìkan fi ṣe pàtàkì
Ẹrù JSON àti XML sábà máa ń jẹ́ ohun tí ó ní ìtumọ̀ jùlọ tí onídàrò kan ń mú lọ́wọ́: àwọn àbájáde API pẹ̀lú àmì ìdánimọ̀ (tokens), àwọn ìránṣẹ́ SOAP pẹ̀lú nọ́mbà àkántì, àwọn fáìlì ètò pẹ̀lú àwọn ọ̀rọ̀ ìdánimọ̀ àṣírí. Ohun èlò yíyí padà tí ó ń ṣiṣẹ́ nínú aṣàwakiri rẹ kì í fi ọ̀kankan lára wọn ránṣẹ́ sí ibòmíràn rárá. Ìṣírò àti ìtẹ̀jáde ń ṣẹlẹ̀ lórí ẹ̀rọ tirẹ, a kì í fi ránṣẹ́ sí sáfà kankan, o sì lè lo ohun èlò náà láìsí íńtánẹ́ẹ̀tì lẹ́yìn tí ojú-ìwé náà ti ṣí. Fún ṣíṣàyẹ̀wò dátà ìdásílẹ̀ tàbí ohunkóhun lábẹ́ ìlànà, ìyẹn ni ìyàtọ̀ láàrin àyẹ̀wò kánkán tí ó léwu àti jíjó dátà láìmọ̀.
Bí o bá nílò láti mú àbájáde náà tọ́ lẹ́yìn náà, fi èyí ṣe pọ̀ pẹ̀lú ìyókù àwọn ohun èlò yíyí dátà padà wa, tàbí kí o mú àbájáde rẹ tọ́ pẹ̀lú ohun èlò ìṣàtúnṣe JSON kí o tó fi fún ohun èlò tí ó tẹ̀lé nínú ìlànà iṣẹ́ rẹ.
Àwọn ìbéèrè tí a sábà máa ń béèrè
Ṣé ohun èlò yíyí padà náà ń fi JSON tàbí XML mi ránṣẹ́ sí ibòmíràn?
Rárá. Yíyí padà JSON sí XML àti XML sí JSON méjèèjì ń ṣẹlẹ̀ pátápátá nínú aṣàwakiri rẹ. Dátà rẹ kì í kúrò lórí ẹ̀rọ rẹ rárá, ohun èlò náà sì ń ṣiṣẹ́ láìsí íńtánẹ́ẹ̀tì lẹ́yìn tí ojú-ìwé náà ti ṣí.
Báwo ni a ṣe ń bójú tó ohun ìní XML nígbà tí a bá yí padà sí JSON?
A ń fi àwọn ohun ìní XML sí bọ́tìnì kan pàtó, tí a sábà máa ń fi àmì at sign síwájú rẹ̀ tàbí kí a kó jọ sínú apá attributes, nítorí pé JSON kò ní èrò ohun ìní tirẹ̀. Àkóónú ọ̀rọ̀ ẹ̀yà náà ni a fi pamọ́ ní ọ̀tọ̀ kí méjèèjì lè yè kúrò nínú yíyí padà.
Kí nìdí tí ẹ̀yà XML kan ṣoṣo mi fi di ohun dípò àkójọ?
XML kò ní àkójọ tirẹ̀, nítorí náà àkójọ jẹ́ àmì kan náà tí a tún ṣe. Nígbà tí ẹ̀yà kan ṣoṣo bá wà, àwọn ohun èlò yíyí padà kò lè fi ìyàtọ̀ sí i àti ohun pẹrẹsẹ lásán, nítorí náà ó di ohun pẹrẹsẹ. Ẹ̀gbọ́n-àbúrò méjì tàbí jù bẹ́ẹ̀ lọ pẹ̀lú orúkọ àmì kan náà ń dí pọ̀ di àkójọ JSON.
Kí ni ó ń ṣẹlẹ̀ sí àwọn namespaces XML bí soap tàbí xmlns?
JSON kò ní ìdọ́gba kan fún namespaces XML rárá. Ní ìbámu sí yíyí padà náà, ìṣáájú náà yálà a ń pa mọ́ gẹ́gẹ́ bí àmì gidi nínú bọ́tìnì tàbí a ń yọ ọ́ kúrò. Ṣàyẹ̀wò àbájáde náà bí ẹni tí ó ń gba dátà rẹ ní ìsàlẹ̀ bá gbára lé àwọn ìṣáájú namespace.
Ṣé mo lè yí JSON padà sí XML kí n sì gba ìwé ìpilẹ̀ṣẹ̀ padà?
Kì í rí bẹ́ẹ̀ nígbà gbogbo ní gẹ́lẹ́gẹ́lẹ́. Yíyí padà máa ń ní ìdẹ̀kùn ní ọ̀nà méjèèjì nítorí pé àwọn ẹ̀yà XML bí ọ̀rọ̀-àsọyé, CDATA, àti ìyàtọ̀ láàrin ohun ìní àti ẹ̀yà kò ní ìdọ́gba tí ó mọ́ nínú JSON. Ìrìnàjò ìlọ-àti-padà ń ṣiṣẹ́ dáradára jùlọ nígbà tí o bá ń darí àwọn ìlànà orúkọ ní ẹ̀gbẹ́ méjèèjì.
Níbo ni a ṣì ń lo XML ju JSON lọ?
XML ń gbé nínú àwọn ètò àtijọ́ àti ilé-iṣẹ́ ńlá: àwọn iṣẹ́ wẹ́ẹ̀bù SOAP, àwọn feed RSS àti Atom, àwọn fáìlì ètò, àti àwọn ìránṣẹ́ owó bí i SWIFT àti ISO 20022. JSON ń borí nínú àwọn API wẹ́ẹ̀bù òde-òní, àwọn ibùdó REST, àti àwọn app fóònù.
