CSV во JSON: конверзија без типови, без вгнездување и со точен разделувач
Оваа страница зема CSV-датотека — редови текст разделени со запирка, точка-запирка или табулатор — и ја претвора во JSON-датотека, обично низа од објекти каде секој ред станува еден објект, а секоја колона станува клуч. Но она што ја прави оваа страница различна од сличните алатки за конверзија на формати се три клучни работи: CSV-то не ги толкува типовите, не може да создаде вгнездени структури, а изборот на разделувач е критичен. Во CSV секоја вредност е текст, дури и ако изгледа како број или датум. Во JSON постојат броеви, булови вредности, null и вгнездени структури, но оваа алатка не ги претвора автоматски — она што го гледате во CSV-то останува низа од знаци во JSON-то. Ова е намерно, за да не се изгуби прецизноста на податоците, особено кога станува збор за водечки нули или поштенски кодови.
За разлика од обратната насока (JSON во CSV), каде вгнездените полиња мора да се сплескаат, овде нема вгнездување. CSV-то е рамна табела, и резултатот е рамна низа од рамни објекти. Никаква хиерархија не може да се создаде од CSV-датотека без дополнителни правила што оваа алатка не ги применува. Изборот на разделувач е задолжителен ако внесувате CSV, додека за JSON или XLSX внесувања не е потребен. Соседните страници за JSON или Excel влез не бараат таков избор. Цитирањето во CSV (quoting) не е универзално следено, па вградени запирки во цитирани полиња, прекини на редови во ќелии и неекранизирани наводници се чести извори на грешки при парсирање, повеќе отколку при други промени на формат.
Што прави оваа страница и што ја прави различна
Примарната функција е едноставна: повлекувате CSV-датотека или ја избирате од вашиот уред, го поставувате излезниот формат на „JSON“, го избирате точниот разделувач ако вашиот CSV користи нешто друго освен запирка, потоа го прегледувате резултатот и ја преземате завршената JSON-датотека. Алатката автоматски го детектира влезниот формат — дали е CSV, JSON или XLSX — и соодветно го толкува. Но главното сценарио е CSV кон JSON.
Сепак, она што навистина ја издвојува оваа страница се трите разлики од фактот листот:
- Без типови во изворот, типизирано во целта. CSV складира сè како рамен текст. JSON поддржува броеви, булови вредности,
nullи вгнездени структури. Секое поле од CSV-то пристигнува како низа од знаци, па броевите (цени, количини), датумите и идентификаторите со водечки нули (поштенски броеви, кодови на производи) не стануваат автоматски броеви или датуми во излезот — тие остануваат низи од знаци освен ако рачно не ги обработите по преземањето. - Нема вгнездување. Бидејќи CSV-то е строго рамна табела, конверзијата произведува рамна низа од рамни објекти. Хиерархиски JSON (објекти во објекти) не може да се создаде од CSV-датотека без дополнителни правила што алатката не ги применува. Обратната насока (JSON во CSV) мора да ги сплеска вгнездените полиња.
- Разделувачот е важен. Мора да наведете дали вашиот CSV користи запирки, точка-запирки или табулатори. Соседните страници за JSON или Excel влез не бараат избор на разделувач.
CSV формат: основи и чести стапици
CSV (Comma-Separated Values) е де факто стандард за размена на табеларни податоци уште од раните денови на компјутерите. Форматот е измамливо едноставен: секој ред е запис, а вредностите се разделени со одреден знак (разделувач). Но проблемите настануваат кога самите податоци содржат разделувачи, прекини на редови или наводници.
На пример, ако имате поле што содржи запирка (на пример, „Ново, Македонија“) и го запишете во CSV како Ново, Македонија, парсерот ќе го толкува како две посебни полиња. За да го избегнете ова, полето мора да биде цитирано: "Ново, Македонија". Ако полето содржи наводници, тие мора да се екранизираат со друг наводник: "Тој рече: ""Здраво""". Ако полето содржи прекин на ред (newline), тој исто така мора да биде внатре во цитирано поле, инаку парсерот ќе го толкува како крај на запис и почеток на нов ред.
Правилата за цитирање во CSV не се универзално следени. Многу програми (Excel, Google Sheets, LibreOffice) следат приближен RFC 4180, но други (стари системи, некои бази на податоци) имаат свои варијации. Оваа алатка очекува стандардно цитирање и сигнализира грешка ако не може да го парсира CSV-то: "This CSV could not be parsed."
Вградените запирки внатре во цитирани полиња се однесуваат правилно, но линиските прекини во ќелиите се зачувани како \n во вредностите на низите од знаци. Ако вашата CSV-датотека има мешани разделувачи (на пример, некои редови со запирки, некои со табулатори), оваа алатка нема да може да ја обработи правилно.
Зошто сите вредности остануваат текст (низи од знаци)
Ова е веројатно најважното техничко прашање што треба да се разбере за оваа конверзија. CSV-то нема концепт на типови. Сè е текст. Кога ќе видите „123,45“ во CSV-датотека, тоа не е дека имате децимален број; тоа се шест знаци: 1, 2, 3, точка, 4, 5. JSON, од друга страна, има експлицитни типови: броеви (без наводници), низи од знаци (во наводници), булови вредности (true/false), null и објекти/низи.
Алатката не прави никакво толкување на типовите. Сите вредности од CSV-то остануваат низи од знаци во JSON-то. Ова значи дека:
- Броеви: „123“ станува
"123"(низа од знаци), а не123(број). Ако вашата апликација очекува број, ќе мора да го конвертирате по преземањето. - Датуми: „2025-03-20“ останува
"2025-03-20". Нема автоматско парсирање на датум. - Водечки нули: Поштенскиот код „01234“ останува
"01234"и не се губи. Ова е клучно за податоци како поштенски броеви, броеви на сметки, ISBN или кој било идентификатор што започнува со нула. Ако подоцна го вчитате JSON-то во средина што автоматски ги детектира типовите (како JavaScript-овJSON.parseкој сам по себе не менува типови, но некои библиотеки или бази на податоци може да го сторат тоа), водечките нули може да се изгубат. - Празни полиња: Празно поле во CSV-то станува празна низа од знаци (
""), а неnullилиundefined.
Ова однесување е намерно. Доколку алатката автоматски ги конвертираше сите броеви што изгледаат како броеви, ќе се изгубеа водечките нули. Доколку ги конвертираше датумите, ќе се појавеа проблеми со локалните формати. Со чување на сè како текст, алатката гарантира дека ниту една информација нема да се изгуби без ваша интервенција.
Како се одвива конверзијата: чекори и кориснички избори
Процесот има неколку јасни чекори, а корисникот има контрола само на одредени места.
- Избор на датотека. Корисникот или ја повлекува датотеката на страницата или ја избира од уредот. Ако не избере датотека, се прикажува порака: "Choose one file first." Ако избраната датотека не е CSV, JSON или XLSX (иако примарното сценарио е CSV), се прикажува: "Choose a CSV, JSON or XLSX file."
- Автоматско детектирање на форматот. Алатката го проверува типот на датотеката. Ако е CSV, бара избор на разделувач; ако е JSON или XLSX, не бара. За XLSX, алатката прво го толкува како табела, а потоа го конвертира во JSON.
- Избор на разделувач (само за CSV). Корисникот избира помеѓу запирка, точка-запирка и табулатор. Ова е клучно за правилно парсирање. Ако изберете погрешен разделувач, секој ред ќе биде погрешно разделен, и резултатот ќе биде неупотреблив.
- Парсирање и конверзија. Алатката го парсира CSV-то според избраниот разделувач и стандардните правила за цитирање. Создава JSON-низа од објекти, каде првиот ред (заглавие) ги дава клучевите, а секој следен ред дава вредности.
- Преглед и преземање. Алатката прикажува преглед на конвертираните податоци, бројот на редови и колони во табелата, и големината на излезната датотека. Корисникот може да го прегледа резултатот и да кликне за да ја преземе JSON-датотеката.
Ако конверзијата трае предолго, се прикажува: "This conversion is taking too long. Try a smaller file."
Грешки и ограничувања: што може да тргне наопаку
Инженерските алатки за конверзија мора да се справат со реален свет на податоци, кој често е неуреден. Оваа страница има дефинирани пораки за секоја неповолна ситуација.
| Ситуација | Порака |
|---|---|
| CSV-то не може да се парсира (грешки во цитирање, неконзистентен број колони) | "This CSV could not be parsed." |
| Датотеката нема податочни редови (само заглавие или празна) | "This file has no table rows." |
| Премногу редови (над максимумот) | "This table has more than ‹max› rows." |
| Премногу колони (над максимумот) | "This table has more than ‹max› columns." |
| Датотеката е преголема (над лимитот) | "This file is too large. Use a file under ‹max›." |
| Не е избрана датотека | "Choose one file first." |
| Погрешен тип на датотека | "Choose a CSV, JSON or XLSX file." |
| Конверзијата трае предолго | "This conversion is taking too long. Try a smaller file." |
Факторот на големина и димензии не е специфициран во факт листот, туку се дадени како шаблони со ‹max›. Она што е важно е дека постојат горни граници, и дека нивното надминување предизвикува јасна порака, а не тивок неуспех.
Најчеста грешка што корисниците ја прават е неусогласеноста на разделувачот. Ако имате CSV генериран од Excel во македонска локализација, веројатно користи точка-запирка (;) како разделувач, бидејќи запирката се користи за децимална точка. Ако не го промените разделувачот во алатката од „Comma“ на „Semicolon“, секој ред ќе биде третиран како едно поле, и резултатот ќе биде низа од објекти со само еден клуч (првиот ред) и една вредност (целиот остаток од редот). Истото важи и за датотеки со табулатори.
Друга честа грешка е датотека со наводници во полињата што не се правилно екранизирани. Ова може да доведе до пораката за неуспешно парсирање.
Кој има корист од оваа алатка
Постојат неколку јасни групи корисници за кои оваа конверзија е директно релевантна.
Прво, развивач кој прима CSV-извоз од база на податоци или табеларен уредник и треба да ги внесе податоците во JavaScript-апликација или API што очекува JSON. Ова е најстандардното сценарио. Развивачот знае дека CSV-то е рамен текст и дека треба самиот да ги обработи типовите по конверзијата. Тој може да напише пост-обработувачки скрипт што конвертира одредени полиња од низи од знаци во броеви или датуми, доколку е потребно.
Второ, аналитичар на податоци кој сака да конвертира наследна CSV-датотека со адреси (што содржи поштенски кодови со водечки нули) во JSON притоа задржувајќи ги нулите. Ова е клучно бидејќи ако алатката автоматски ги конвертираше броевите, поштенскиот код „01234“ ќе станеше 1234, што е грешка. Алатката ги чува како текст, и аналитичарот е сигурен дека податоците се точни.
Трето, тим што дели табеларни податоци помеѓу нетехнички колега (кој користи Excel/CSV) и технички стек што зборува JSON, без да ги прикачи чувствителните информации на сервер. Конверзијата работи целосно во прелистувачот. Фајлот не се испраќа никаде. Ова е клучно за приватност и безбедност, особено ако податоците содржат лични информации, финансиски податоци или деловни тајни.
Четврто, секој што подготвува едноставна табела со производи, контакти или логи за употреба во веб-алатка што чита JSON. Ова е често сценарио во мали бизниси, е-трговија или управување со содржини.
Петто, студент или истражувач што треба да трансформира еднократен CSV во структуриран формат за програмска задача. CSV-то е лесно за генерирање од табеларен уредник, но многу програмски јазици и околини очекуваат JSON како влез.
Често поставувани прашања (ЧПП)
Дали броевите од CSV-то автоматски стануваат бројки во JSON-то?
Не. Сите вредности од CSV-то остануваат низи од знаци во JSON-то. Ако сакате број, мора да го конвертирате по преземањето. Ова е за да се зачуваат водечките нули и да се избегне губење на прецизноста.
Што ако мојот CSV има запирки внатре во полињата?
Запирките во полињата мора да бидат цитирани (ставени во наводници). На пример, "Ново, Македонија". Ако запирките не се цитирани, парсерот ќе ги третира како разделувачи, и податоците ќе бидат погрешно разделени.
Што ако датотеката содржи прекини на редови внатре во полиња?
Прекините на редови мора да бидат внатре во цитирано поле. Алатката ги зачувува како \n во вредностите на низите од знаци. Ако прекините на редови не се цитирани, тие ќе бидат третирани како крај на записот и почеток на нов ред, што ќе предизвика грешки во парсирањето.
Дали датотеката се испраќа на сервер?
Не. Конверзијата се извршува целосно во прелистувачот. Датотеката не се испраќа никаде. Ова е безбедно за приватни и чувствителни податоци.
Зошто датумите остануваат текст наместо да се претворат во JSON-датуми?
JSON нема стандарден формат за датуми. Многу апликации користат низи од знаци во ISO 8601 формат ("2025-03-20") или Unix време (број). Алатката не прави претпоставки за формат на датум, бидејќи тоа би варирало од локација до локација. Сè останува како низа од знаци, и вие одлучувате како да го обработите.
Што ако конверзијата трае предолго или ако датотеката е премногу голема?
Конверзијата се прекинува и се прикажува соодветна порака: "This conversion is taking too long. Try a smaller file." или "This file is too large. Use a file under ‹max›." Овие граници постојат за да се обезбеди стабилност на алатката и да се избегнат проблеми со меморијата во прелистувачот.