CSV tungo sa JSON: Pag-convert ng Flat Table sa Structured Data
Ang buong conversion ay nangyayari sa browser. Walang file na ina-upload sa isang server. Ito ay isang sinadyang pagpili ng arkitektura na may dalawang praktikal na implikasyon:
-
Ang sensitibong data ay nananatili sa lokal. Kung nagko-convert ka ng CSV ng impormasyon sa pakikipag-ugnayan ng customer, mga medikal na rekord, o mga transaksyon sa pananalapi, ang raw data ay hindi kailanman umaalis sa iyong device. Gumagana ang tool offline pagkatapos mag-load ang pahina.
-
Ang mga limitasyon sa laki ng file ay ipinapatupad sa browser. Dahil ang pagproseso ay nangyayari nang lokal, ang napakalaking file ay maaaring maging sanhi upang ang tab ng browser ay hindi tumugon o mag-crash. Tumatanggap ang tool ng mga file na hanggang 8 MB—kapag nalampasan, ipinapakita nito ang:
This file is too large. Use a file under ‹max›.
Nililimitahan din nito ang mga talahanayan sa 10,000 row at 200 column. Kung ang talahanayan ay may mas maraming row, ang mensahe ay:
This table has more than ‹max› rows.
Gayundin para sa mga column. Ang mga limitasyong ito ay inilalagay upang panatilihing makatwiran ang mga oras ng conversion at upang maiwasan ang pagkaubos ng memorya sa panig ng kliyente.
Kung ang conversion ay tumagal ng higit sa humigit-kumulang 12 segundo, ito ay ititigil at makikita mo ang:
This conversion is taking too long. Try a smaller file.
Hindi ka maiiwan na nagtataka kung nag-freeze ang tab.
Sinasaklaw ng tool ang mga pinakakaraniwang mode ng pagkabigo na may mga partikular na mensahe. Mahalagang malaman ang mga ito nang maaga dahil madalas itong tumuturo sa mga partikular na sanhi.
| Mensahe ng error | Malamang na sanhi |
|---|---|
| Choose a CSV, JSON or XLSX file. | Ang napiling file ay may extension maliban sa .csv, .json, o .xlsx. |
| This CSV could not be parsed. | Ang CSV ay may mga error sa pag-quote (hindi balanse ang mga quote, nawawalang comma sa loob ng mga naka-quote na field), hindi pare-pareho ang bilang ng column sa pagitan ng mga row, o pinaghalong mga delimiter. |
| This file has no table rows. | Ang file ay walang laman, o bawat row dito ay blangko. |
| This file is too large. Use a file under ‹max›. | Ang laki ng file sa bytes ay lumampas sa 8 MB na limitasyon. |
| This conversion is taking too long. Try a smaller file. | Ang conversion ay lumampas sa humigit-kumulang 12-segundong limitasyon, karaniwan dahil ang file ay masyadong malaki o kumplikado. |
Ang lahat ng mga error ay terminal para sa pagtatangka ng conversion na iyon. Hindi sinusubukan ng tool na ayusin ang isang malformed na CSV o putulin ang isang file na lumampas sa mga limitasyon.
Bakit ang lahat ng aking mga numero ay string pa rin sa JSON output?
Dahil walang impormasyon sa uri ang CSV. Tinatrato ng tool ang lahat bilang text. Kung kailangan mo ng mga numero, dapat mong i-convert ang mga ito pagkatapos i-download. Halimbawa, sa JavaScript: json.map(row => ({...row, price: Number(row.price) })).
Ang aking CSV ay may mga nangungunang zero sa mga postal code, ngunit nawala ang mga ito nang buksan ko ang JSON sa aking programa. Ano ang nangyari?
Pinreserba ng tool ang mga ito bilang mga string ("00123"), ngunit maaaring pinilit ng JSON parser ng iyong programa ang mga ito sa mga numero kapag na-access mo ang halaga. Basahin ang JSON bilang isang string at panatilihin ito bilang isang string. Huwag gumamit ng JSON.parse na may awtomatikong type conversion, o balutin ang field sa mga karagdagang quote.
Maaari ba akong mag-convert ng CSV na naglalaman ng nested data, tulad ng isang order na may maraming line item?
Hindi. Ang CSV ay isang flat grid. Ang isang row bawat line item ay nangangahulugang ang order ID ay umuulit sa bawat row. Naglalabas ang tool ng isang array ng mga flat object. Kakailanganin mong i-post-process ang JSON upang i-grupo ang mga row pabalik sa mga nested na istruktura.
Ang aking CSV ay may mga line break sa loob ng isang cell (isang multi-line address). Hahawakan ba ito ng JSON nang tama?
Oo. Kung ang cell ay maayos na naka-quote ayon sa RFC 4180, ang line break ay pinreserba bilang isang escape sequence sa loob ng JSON string. Ang output ay nananatiling valid na JSON. Kung ang CSV ay hindi naka-quote, ang line break ay maling naiintindihan bilang isang bagong row at nabigo ang parse.
Sinasabi ng tool na masyadong malaki ang aking file. Paano ko ito mai-convert?
Ang limitasyon ay 8 MB. Bawasan ang laki ng file: alisin ang mga extraneous na column, hatiin ang CSV sa mga chunk, o gumamit ng desktop tool na kayang humawak ng mas malalaking file. Ang limitasyon sa panig ng kliyente ay umiiral dahil pinapatakbo ng iyong browser ang conversion gamit ang available na memorya.
Pinili ko ang "Comma" bilang delimiter ngunit mukhang mali ang output. Ano ang dapat kong gawin?
Suriin kung ang iyong CSV ay talagang gumagamit ng mga comma. Buksan ang file sa isang plain text editor. Kung makakita ka ng mga semicolon sa pagitan ng mga halaga, piliin ang "Semicolon". Kung makakita ka ng mga tab, piliin ang "Tab". Ang isang mabilis na pag-scan ng unang ilang linya ay magsasabi sa iyo.
Ano ang Ginagawa ng Pahinang Ito?
Kapag mayroon kang CSV file — mga row na pinaghihiwalay ng kuwit, semicolon, o tab — at kailangan itong maging JSON file (karaniwang array ng mga object kung saan ang bawat row ay nagiging isang object at ang bawat column ay nagiging key), ginagawa ito ng tool na ito. I-drag mo lang ang file sa upload area o piliin ito mula sa iyong device. Piliin ang tamang delimiter kung ang CSV mo ay hindi gumagamit ng kuwit (Comma, Semicolon, o Tab), i-preview ang resulta, at i-download ang natapos na JSON.
Ang conversion ay nangyayari nang lokal sa iyong browser — walang file na ina-upload sa server. Kaya ligtas kahit na sensitibo ang datos.
Bakit Naiiba ang Tool na Ito?
Maraming CSV-to-JSON converter online, ngunit apat na bagay ang nagpapaiba sa pahinang ito.
1. Walang uri ng datos (types) mula sa CSV, nananatiling text ang lahat
Ang CSV ay nag-iimbak ng lahat bilang plain text. Kahit na ang isang column ay mukhang numero (presyo, dami) o petsa, sa ilalim ito ay string pa rin. Kapag na-convert sa JSON, hindi awtomatikong nagiging number, boolean, o null ang mga halaga. Ang halimbawa: kung ang CSV ay may "500" para sa halaga ng produkto, lalabas ito sa JSON bilang "500" (string), hindi 500 (number). Kung kailangan mo ng numeric na halaga, kailangan mong manual na i-convert ito pagkatapos.
2. Walang nesting na posible
Ang CSV ay mahigpit na flat table. Bawat row ay pareho ang bilang ng columns. Dahil dito, ang JSON na magagawa ay flat array ng flat objects. Hindi maaaring lumikha ng hierarchical JSON (mga object sa loob ng isa pang object) mula sa CSV na walang karagdagang panuntunan — at hindi ito ginagawa ng tool. Kung kailangan mo ng nested JSON, kailangan mong magproseso ng output sa ibang paraan.
3. Mahalaga ang tamang delimiter
Kailangan mong tukuyin kung ang CSV ay gumagamit ng kuwit (,), semicolon (;), o tab (\t). Ito ay madalas na pinagmumulan ng pagkakamali. Halimbawa: kung ang iyong CSV ay ginawa sa European na bersyon ng Excel, karaniwan ay semicolon ang delimiter dahil ang kuwit ay ginagamit bilang decimal separator. Kung mali ang piliin, magiging isang column na lang ang bawat row — walang silbi ang resulta.
4. Fragile ang embedded commas at line breaks
Hindi palaging sinusunod ang CSV quoting rules. Kapag may kuwit sa loob ng isang field (tulad ng address na “123 Main St, Apt 4”), dapat itong nakapaloob sa double quotes ("). Kung wala, ituturing itong dalawang magkahiwalay na column at masisira ang row. Gayundin, ang line break sa loob ng isang cell ay bihirang maayos na nape-preserve. Kapag nabasa nang tama ang quoted line break, ito ay nagiging sa JSON string. Ngunit kung mali ang pag-quote, magdudulot ito ng parse failure.
Mga Input at Output
Input: Isang CSV file.
Mga pagpipilian ng user: Kung ang input ay CSV, piliin ang delimiter: Comma, Semicolon, o Tab. Ang Comma ang default.
Output: Isang JSON file. Bago i-download, magpapakita ang tool ng preview ng na-convert na datos (unang 8 rows at 8 columns), ang bilang ng rows at columns, at ang laki ng output file.
Ang preview ay critical: makikita mo kung ang conversion ay tama bago pa mag-download. Kung may mali sa pag-parse, lilitaw ang isang error message.
Mga Panuntunan at Hangganan (Edge Cases)
Ang tool ay may mga tiyak na limitasyon at error messages. Narito ang bawat isa:
| Sitwasyon | Error Message na Ipapakita |
|---|---|
| Hindi ma-parse ang CSV (hal. maling quoting, hindi pare-parehong bilang ng columns) | "This CSV could not be parsed." |
| Walang laman ang file (zero data rows) | "This file has no table rows." |
| Higit sa 10,000 rows | "This table has more than ‹max› rows." |
| Higit sa 200 columns | "This table has more than ‹max› columns." |
| File size ay lumampas sa 8 MB | "This file is too large. Use a file under ‹max›." |
| Walang napiling file | "Choose one file first." |
| Maling file type (hindi CSV, JSON, o XLSX) | "Choose a CSV, JSON or XLSX file." |
| Matagal bago mag-convert (higit sa 12 segundo) | "This conversion is taking too long. Try a smaller file." |
Ang mga limitasyong ito ay upang protektahan ang browser mula sa sobrang laki ng datasets. Hindi ginagawa ng tool ang formula processing, at hindi nito awtomatikong kino-convert ang text sa numero o petsa.
Sino ang Nangangailangan Nito?
- Isang developer na nakatanggap ng CSV export mula sa database o spreadsheet at kailangang ipasok ang datos sa JavaScript application o API na umaasa sa JSON.
- Isang data analyst na gustong i-convert ang legacy CSV address file (na may leading-zero postcodes tulad ng
01234) sa JSON habang pinapanatili ang mga zero — dahil ang string treatment ay hindi mag-aalis ng zero. - Isang team na nagbabahagi ng tabular data sa pagitan ng isang di-teknikal na kasamahan (na gumagamit ng Excel/CSV) at isang tech stack na nagsasalita ng JSON, nang hindi nag-a-upload ng sensitibong impormasyon sa server.
- Kahit sino na naghahanda ng simpleng table ng mga produkto, contact, o logs para sa web tool na nagbabasa ng JSON.
- Isang estudyante o researcher na kailangang ibahin ang isang beses na CSV sa structured format para sa programming assignment.
Ang bawat isa ay may parehong pangangailangan: mapanatili ang integridad ng datos sa proseso ng conversion, at maiwasan ang mga pitfalls tulad ng maling delimiter o pagkawala ng leading zeros.
Mga Karaniwang Pagkakamali at Praktikal na Tip
1. Nananatiling string ang mga numero
Kunwari ito ang CSV:
product, price, zip
Widget, 19.99, 01234
Pagkatapos ng conversion, ang JSON ay magiging:
[
{
"product": "Widget",
"price": 19.99,
"zip": "01234"
}
]
Ang price ay magiging number, habang ang zip ay mananatiling string. Kung awtomatikong mag-typecast ang iyong JSON parser, mawawala ang zero at magiging 1234.
2. Maling delimiter
Ang CSV na may semicolon delimiter ay kadalasang hindi nababasa kung pipiliin mong “Comma.” Ang resulta: isang column na lang na naglalaman ng buong row bilang isang string. Bago mag-convert, buksan ang CSV sa text editor at tingnan kung ano ang separator. Kung ang file ay may header na Name;Age;City, semicolon ang gamit.
3. Embedded commas at quotes
Kung may address na 123 Main St, Apt 4, dapat itong naka-quote: "123 Main St, Apt 4". Kung hindi, makakabuo ito ng dagdag na column. Kung may quote sa loob ng field (hal. "John ""Johnny"" Smith"), dapat itong i-escape ng double quote. Hindi lahat ng CSV ay sumusunod sa RFC 4180; ang tool ay sumusubok na mag-parse nang matino, ngunit may mga file na talagang corrupt.
4. Line breaks sa loob ng cell
Kung ang isang cell ay may multi-line na value, dapat itong nakapaloob sa quotes. Halimbawa:
id,description
1,"Line 1
Line 2"
Pagkatapos ng conversion, ang description ay magiging string na may line break character: "Line 1 Line 2". Kung walang quotes, iisipin ng parser na ang linya ay nagtatapos doon — magdudulot ito ng error na "This CSV could not be parsed."
5. Pagpapanatili ng leading zeros
Ang tanging paraan para mapanatili ang leading zeros (tulad ng ZIP codes 00501 o product code 00123) ay ang pagtrato ng lahat bilang string. Ginagawa ito ng tool. Pero kung dadalhin mo ang JSON sa isang environment na awtomatikong nagta-type (tulad ng JavaScript na nagbabasa ng JSON at nag-iinterpret ng "00501" bilang number), mawawala ang zero. Siguraduhing i-parse ang JSON gamit ang reviver function o i-process manually.
FAQ (Mga Madalas Itanong)
1. Bakit nananatiling string ang numero sa JSON ko?
Sapagkat ang CSV ay walang type system. Lahat ng halaga ay text. Hindi awtomatikong kino-convert ng tool ang mga ito sa number, boolean, o null. Kung gusto mong maging number, kailangan mong gawin ito pagkatapos — halimbawa, sa JavaScript gamit ang Number() o JSON.parse() na may reviver.
2. Paano ko malalaman kung comma o semicolon ang ginamit sa CSV?
Buksan ang file sa isang plain text editor (tulad ng Notepad). Tingnan ang unang linya. Kung ang pagitan ng bawat column ay ,, comma ang delimiter. Kung ;, semicolon. Kung may tab spacing, maaaring tab-delimited (TSV). Piliin ang tamang opsyon sa tool.
3. Bakit nag-error na “This CSV could not be parsed” kahit tama naman ang file? Maaaring mayroong isa sa mga sumusunod: (a) hindi pare-pareho ang bilang ng columns sa bawat row; (b) may kuwit o line break na hindi naka-quote; (c) may unescaped double quote sa loob ng field. Suriin ang file para sa mga hindi pangkaraniwang character.
4. Maaari bang magkaroon ng nested JSON mula sa CSV? Hindi nang direkta. Ang CSV ay flat table; ang JSON na nagagawa ay flat array ng flat objects kung saan ang bawat row ay may parehong keys. Kung kailangan mo ng nested structure (hal. mga orders na may line items), dapat mong i-restructure ang CSV o mag-apply ng custom processing pagkatapos.
5. Paano ang line break sa loob ng cell?
Kung ang CSV ay may quoted field na may line break, mapapa-preserve ito bilang sa JSON string. Ngunit karamihan sa mga CSV generator ay hindi wastong nag-quote ng multi-line cells. Kung mali ang pag-quote, magiging parse failure. Subukang i-reformat ang CSV bago i-upload.
6. Ligtas ba ang aking data? Oo. Ang buong conversion ay nangyayari sa iyong browser. Walang file na umalis sa iyong device. Kaya ito ay angkop para sa sensitibong datos tulad ng mga address, contact numbers, o financial records.