Зошто претворањето од JSON во CSV бара посебна алатка
JSON е хиерархиски формат кој поддржува вгнездени објекти, низи, броеви, булови вредности и null. CSV, од друга страна, е рамна, нетипизирана табела без можност за вгнездување или повеќе листови. Кога конвертирате од JSON во CSV, се губи секоја информација за типот на податокот – сите вредности стануваат текстуални низи. Алатката на оваа страница го прави токму тоа: го израмнува JSON-от во табела со помош на dot-path нотација, при што клучевите од вгнездените објекти се претвораат во колони како address.city. Целата обработка се одвива во прелистувачот – ниту еден дел од вашата датотека не се испраќа на сервер. Ова е клучната разлика во однос на онлајн конверторите што бараат прикачување.
Како функционира израмнувањето (flattening) на JSON
JSON-от мора да биде „табеловиден“ – односно да претставува низа од објекти или низа од низи. Ако дадете низа од објекти, секој објект станува еден ред во CSV, а клучевите на објектите стануваат колони. За вгнездени објекти, клучевите се спојуваат со точка: на пример, ако имате "address": { "city": "Скопје", "zip": 1000 }, во CSV ќе се појават колоните address.city и address.zip. Ако нивото на вгнездување е поголемо, се додаваат повеќе точки – address.location.lat.
Ако JSON-от е низа од низи (на пример, [["име", "презиме"], ["Петар", "Петров"]]), тогаш секоја внатрешна низа станува ред, а елементите во низата стануваат колони. Во тој случај нема објектни клучеви – колоните се нумерирани по редослед.
Алатката автоматски ги применува правилата за цитирање во CSV: ако вредноста содржи запирка, нов ред или наводник, таа се затвора во двојни наводници, а внатрешните наводници се удвојуваат. Ова е стандардно CSV однесување (RFC 4180) и алатката го прави без да праша.
Критични разлики меѓу JSON и CSV што влијаат на резултатот
Во JSON броевите, буловите и null постојат како посебни типови. Во CSV се претвораат во низи. Бројот 42 станува низата "42", буловата true станува "true", а null станува празна низа. Водечките нули (на пример, поштенски код 01000) се губат бидејќи JSON броевите не ги зачувуваат. Ако вредноста е всушност JSON број, таа ќе биде запишана без водечки нули.
Друга важна разлика: JSON поддржува повеќе нивоа на вгнездување, додека CSV има само една рамнина. Затоа, сите вгнездени структури мора да се израмнат. Израмнувањето со точка е стандард, но тоа создава долги имиња на колони ако структурата е длабока. Алатката не нуди алтернатива (како, на пример, префикси со загради) – користи точка.
Исто така, JSON може да содржи низи од објекти кои не се униформни (различни клучеви во различни објекти). Алатката создава колони за сите клучеви што се појавуваат во макар еден објект, но вредностите за недостасувачките клучеви остануваат празни. Ова е разумно однесување, но може да резултира со многу празни ќелии.
Правила и гранични случаи: кога конверзијата не успева
Алатката има неколку строги проверки. Ако датотеката не е валиден JSON или не е табеловидна (низа од објекти/низи), се прикажува грешка: „This JSON is invalid or not table‑shaped.“. Ова значи дека единствен JSON објект (без низа) нема да работи – мора да биде низа. На пример, { "name": "Петар" } не е низа, па нема да помине.
Големината на датотеката е ограничена на 8 MB. Ако надмине дозволената големина, се прикажува: „This file is too large. Use a file under ‹max›.“.
Исто така, постојат ограничувања за бројот на редови и колони: најмногу 10.000 редови и 200 колони. Ако табелата има повеќе од максималниот број редови, грешката вели: „This table has more than ‹max› rows.“. Истото важи и за колони. Алатката работи целосно во прелистувачот, па ако конверзијата трае премногу долго (повеќе од околу 12 секунди), се појавува: „This conversion is taking too long. Try a smaller file.“. Други можни грешки вклучуваат: „Choose a CSV, JSON or XLSX file.“, „Could not convert this file.“ и „Conversion cancelled.“.
Сите овие грешки се прикажуваат на корисникот без дополнително објаснување – затоа е важно однапред да се провери дали JSON-от е соодветен.
Кога ви треба оваа конверзија: вистински сценарија
Најчест случај: преземате податоци од API-то на некоја веб-услуга (на пример, листа на корисници во JSON формат) и треба да ги внесете во Excel, Google Sheets или друга табеларна апликација за анализа. Бидејќи CSV е универзален формат за размена на табеларни податоци, конверзијата ви овозможува да ги отворите директно.
Друг важен случај: работите со доверливи податоци и не сакате да ги прикачувате на надворешен сервер. Бидејќи алатката работи во прелистувачот, сите податоци остануваат на вашиот компјутер. Ова е клучно за здравствени, финансиски или лични податоци.
Трето сценарио: треба да конвертирате JSON од некој систем (на пример, NoSQL база) во CSV за да го увезете во релациона база. Во тој случај, важно е да изберете соодветен раздвојувач (comma, semicolon, tab). Алатката ви овозможува да го изберете раздвојувачот пред конверзија, што го олеснува прилагодувањето кон локалните поставки (на пример, во Европа често се користи точка-запирка како раздвојувач, бидејќи запирката се користи како децимална точка).
Заблуди и вообичаени грешки при работа со JSON во CSV
Една од најчестите грешки е да се мисли дека сите податоци од JSON ќе се задржат непроменети во CSV. Како што веќе рековме, типовите исчезнуваат. Ако имате "active": true во JSON, во CSV ќе биде "true" како низа. Excel може да го интерпретира како текст, но ако отворите во друг софтвер, може да го третира како број (0 или 1). Никогаш не потпирајте се на типови во CSV.
Друга грешка: игнорирање на водечките нули. Поштенски код 01000 во JSON (како број) ќе стане 1000 во CSV. Ако ви требаат водечки нули, внесете ги како низи во JSON (со наводници).
Трета грешка: очекување дека вгнездените структури ќе се зачуваат како посебни листови или како JSON-низи во ќелии. CSV не поддржува тоа. Единствен начин е да ги израмните. Ако оригиналниот JSON има сложена структура со многу нивоа, разгледајте дали може да го трансформирате однапред (на пример, со скрипта или со jq) пред да го конвертирате.
Често поставувани прашања (FAQ)
Дали алатката може да конвертира JSON-датотека со повеќе објекти (JSON lines)?
Влезниот JSON мора да биде низа од објекти или низа од низи. Ако имате датотека со по еден JSON објект по ред (NDJSON), таа не е валиден JSON-низа. Ќе треба прво да ја претворите во низа (на пример, со додавање на загради и запирки) или да користите специјализирана алатка.
Што се случува ако мојот JSON содржи празни низи?
Празна низа ќе се претвори во празна ќелија во CSV. Низите со повеќе елементи што не се објекти (на пример,) се претвораат како една ќелија со вредноста "1,2,3" (ако користите запирка како раздвојувач, тоа ќе предизвика дополнителни колони ако не е правилно цитирано). Најдобро е да се осигурате дека JSON-от е низа од објекти или низа од низи со ист број елементи.
Дали можам да го променам раздвојувачот откако ќе го видам прегледот?
Да, прегледот се ажурира веднаш штом го промените раздвојувачот (Comma, Semicolon или Tab). Можете да го изберете најсоодветниот пред да ја преземете датотеката.
Зошто мојата CSV-датотека содржи повеќе колони од очекуваното?
Ако објектите во низата имаат различни клучеви, алатката создава колона за секој единствен клуч. Препорачливо е да го средите JSON-от така што сите објекти имаат ист сет клучеви, или да ги отстраните непотребните.
Дали конверзијата работи и за XLSX-датотеки?
Оваа страница е специфично за JSON-во-CSV конверзија.
Што ако конверзијата трае премногу долго?
Алатката прикажува грешка „This conversion is taking too long. Try a smaller file.“. Најверојатно датотеката има премногу редови или колони. Пробајте да го намалите бројот на записи или да го поедноставите JSON-от пред да го вчитате.