CSV na JSON: njia mbili za kubeba data ile ile
Data nyingi za jedwali huishia katika mmoja wa miundo miwili. CSV ni lugha asilia ya lahajedwali (spreadsheet): faili ya maandishi tambarare ambapo kila mstari ni safu na koma hutenganisha nguzo. JSON ni lugha ya API na programu: muundo wa maandishi uliopangwa unaojengwa kutoka vitu (objects) (jozi za funguo na thamani) na safu (arrays) (orodha zilizopangwa). Hueleza taarifa ile ile katika maumbo tofauti sana, na hiyo ndiyo hasa sababu kubadilisha kati yao hutokea mara kwa mara. Ukurasa huu hufanya ubadilishaji huo pande zote mbili, kabisa ndani ya kivinjari chako.
CSV huangaza popote gridi inapohisiwa asilia. Hamisha ripoti kutoka hifadhidata, pakua orodha ya maagizo, au hifadhi laha kutoka Excel au Google Sheets, na karibu daima utapata CSV. Ni fupi, inasomeka kwa binadamu, na kila zana ya uchambuzi duniani inaweza kuifungua. JSON huangaza popote programu inapozungumza na programu. API za REST hutuma na kupokea, faili za usanidi hutumia, na JavaScript husoma bila maktaba yoyote ya kufasiri. Unapohitaji kulisha hamisho la lahajedwali kwenye API au kuvuta jibu la API kwenye lahajedwali, kwa kweli unatafsiri kati ya walimwengu hawa wawili.

Jinsi safu na vichwa vinavyokuwa vitu
Ulinganisho ni rahisi zaidi kuliko unavyoonekana. Mstari wa kwanza wa faili ya CSV kwa kawaida ni safu ya kichwa, na majina hayo ya kichwa huwa funguo katika JSON. Kila mstari unaofuata huwa kitu kimoja, ambapo kila kiini kinaunganishwa na kichwa kinacholingana. Faili nzima huwa safu ya vitu hivyo. Hivyo CSV yenye nguzo name,email,age hubadilika kuwa orodha kama [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]. Kwa upande mwingine, JSON kuwa CSV husoma funguo za kitu cha kwanza kujenga mstari wa kichwa, kisha kuandika mstari mmoja kwa kila kitu. Ni mzunguko safi, unaotabirika mradi tu data yako ni ya kweli ya jedwali.
Mambo ya kuzingatia yanayostahili kujulikana
CSV inaonekana rahisi lakini huficha kingo chache kali. Kubwa zaidi ni koma ndani ya sehemu. Kama anwani ina "Berlin, Germany", kugawanya kwa kijinga kwa koma kungegawanya thamani hiyo moja kuwa nguzo mbili. Kiwango cha CSV hushughulikia hili kwa kufunga sehemu kama hizo katika alama za nukuu mbili, na alama za nukuu ndani ya sehemu iliyofungwa huongezwa mara mbili (""). Kibadilishaji kizuri huheshimu sheria hizo ili data yako isihame nguzo kimya kimya. Angalia pia kigawanyi (delimiter): hamisho nyingi za Ulaya hutumia nusu-koma badala ya koma, kwa sababu koma tayari ni kigawanyi cha desimali huko. Tabu na mistari (pipes) pia hujitokeza.
Tofauti ya kina zaidi ni aina za data. CSV haina dhana ya aina za data kabisa. Kila kitu ni maandishi, hivyo namba 42, boolean true, na kiini tupu vyote vinaonekana kama mfuatano wa maandishi wa kawaida. JSON, kwa upande mwingine, hutofautisha namba, mfuatano wa maandishi, boolean, null, na miundo iliyowekwa ndani ya kila kimoja. Unapobadilisha CSV kuwa JSON, thamani hufika kama mfuatano wa maandishi isipokuwa chombo kiambiwe kufasiri namba na boolean. Kubadilisha JSON kuwa CSV kuna tatizo kinyume: vitu na safu zilizowekwa ndani hazifai vizuri kwenye gridi tambarare, hivyo kwa kawaida hufanywa tambarare au kubadilishwa kuwa mfuatano wa maandishi ndani ya kiini kimoja. Kujua hili mapema kunakuokoa kutoka kutatanishwa na kwa nini nguzo "inaonekana isiyo sahihi" baadaye.

Mzunguko halisi wa kwenda na kurudi
Hii ni hali inayotokea mara kwa mara. Mwenzako anakutumia lahajedwali la watumiaji wapya na kukuomba uwapakie kupitia API ya ndani. API inakubali JSON tu. Unahamisha laha kuwa CSV, unaibandika hapa, na kupata orodha safi ya vitu tayari kuingizwa kwenye mzigo wa ombi lako. Baadaye, API inarudisha orodha ya JSON ya rekodi ilizoziunda, na unahitaji kumkabidhi tena mwenzako kwa ukaguzi. Unabandika JSON, kuibadilisha kuwa CSV, na inafunguka moja kwa moja kwenye lahajedwali lao. Hakuna hati za amri, hakuna usakinishaji, ni tafsiri mbili tu za haraka katikati ya mtiririko wa kawaida wa kazi.
Ndani tu, kwa makusudi
Yote haya hufanyika kwenye kivinjari chako. CSV na JSON yako hufasiriwa na kubadilishwa na JavaScript kwenye mashine yako mwenyewe, na hakuna kinachopakiwa kwenye seva. Hilo ni muhimu kwa sababu hamisho mara nyingi hubeba majina halisi, barua pepe, maelezo ya maagizo, au vitambulisho vya ndani ambavyo haupaswi kubandika kwenye huduma ya mbali isiyojulikana. Hapa data haiondoki kwenye ukurasa kamwe. Kama unataka kusafisha matokeo baadaye, kiundaji cha JSON chetu kitachapisha kwa uzuri na kuthibitisha, na unaweza kuvinjari mengine ya vibadilishaji vyetu vya data kwa miundo inayohusiana.
Maswali yanayoulizwa mara kwa mara
Je, data yangu inapakiwa mahali popote?
Hapana. Ubadilishaji hufanyika kabisa kwenye kivinjari chako kwa kutumia JavaScript, hivyo CSV na JSON yako inabaki kwenye kifaa chako mwenyewe na haitumwi kwenye seva kamwe.
Je, kibadilishaji hushughulikia koma ndani ya sehemu?
Ndiyo. Sehemu zenye koma zinapaswa kufungwa kwa alama za nukuu mbili katika CSV, na kifasiri huheshimu alama hizo za nukuu ili thamani ibaki kwenye nguzo moja.
Kwa nini namba zangu zinaonekana kama maandishi katika JSON?
CSV haina aina za data, hivyo kila kiini ni maandishi tambarare. Thamani huwa mfuatano wa maandishi wa JSON isipokuwa ufasiri wa namba na boolean utumike, kwa sababu faili ya chanzo haina njia ya kutofautisha namba na neno.
Nini hutokea kwa JSON iliyowekwa ndani ya kila kimoja ninapobadilisha kuwa CSV?
Gridi tambarare haiwezi kubeba miundo iliyowekwa ndani ya kila kimoja, hivyo vitu na safu zilizowekwa ndani kwa kawaida hufanywa tambarare au kuandikwa kama thamani moja ya mfuatano wa maandishi ndani ya kiini kimoja.
Je, ninaweza kutumia nusu-koma au tabu badala ya koma?
Ndiyo. Hamisho nyingi, hasa za Ulaya, hutumia nusu-koma au tabu kama vigawanyi, na chombo kinaweza kusoma hivyo badala ya koma ya kawaida.
Je, hubadilisha pande zote mbili?
Ndiyo. Unaweza kubadilisha CSV kuwa JSON na JSON kurudi kuwa CSV, jambo linalofanya mizunguko ya kwenda na kurudi kati ya lahajedwali na API kuwa rahisi.
