JSON-ді CSV-ге түрлендіру: ішкі құрылымды жай таблицаға айналдыру
Бұл беттің негізгі ерекшелігі — иерархиялық, типтелген JSON пішімін жай, типсіз CSV кестесіне жазықтайды. JSON объектілер, массивтер, сандар, бульдік мәндер және null сияқты күрделі құрылымдарды қолдайды, ал CSV-де типтер жоқ, ұялы құрылым жоқ, парақтар жоқ. Түрлендіру кезінде барлық типтік ақпарат, ұялы құрылым, бірнеше парақ (JSON-да олар жоқ) және пішімдеу жоғалады. Ұялы JSON объектілерін жай CSV-де көрсету үшін құрал нүктелік жол белгілеуімен (dot-path notation) объект кілттерін жазықтайды (мысалы, address.city). Объектілер массиві кесте жолдарына айналады; массивтер массиві жолдар ретінде сақталады. CSV бөлгіштерді қолданатындықтан, ішіне енгізілген үтірлер мен жол үзілімдері тырнақшаға алынуы керек — құрал мұны автоматты түрде жасайды, бірақ сандардағы бастапқы нөлдер жоғалуы мүмкін. Түрлендіру алдында ұялы өрістердің қалай көрсетілетінін өзіңіз шешуіңіз керек (құрал әдепкі бойынша нүктелік жолдарды пайдаланады).
JSON мен CSV арасындағы құрылымдық айырмашылықтар
JSON (JavaScript Object Notation) деректерді иерархиялық түрде ұйымдастырады. Бір JSON файлында объектілер, массивтер, сандар, мәтіндер, бульдік мәндер және null болуы мүмкін. Мысалы, API жауабы келесідей болуы мүмкін:
[
{
"name": "Aisulu",
"age": 28,
"address": {
"city": "Almaty",
"district": "Almaly"
},
"tags": ["developer", "data"],
"active": true,
"notes": null
}
]
CSV (Comma-Separated Values) файлында тек мәтіндік мәндері бар жай кесте ғана болады. Жоғарыдағы JSON CSV-ге түрлендірілгенде, келесідей болады:
| name | age | address.city | address.district | tags | active | notes |
|---|---|---|---|---|---|---|
| Aisulu | 28 | Almaty | Almaly | "[""developer"",""data""]" | true |
Мұндағы address объектісі address.city және address.district деген екі бағанға бөлінді. tags массиві мәтін жолына айналды, бірақ бұл әдепкі әрекет емес — көптеген құралдар массивті бірнеше бағанға бөлуді ұсынбайды. age саны мәтінге айналды, сондықтан Excel немесе Google Sheets оны сан ретінде таниды, бірақ бастапқы нөлдері бар сандар (мысалы, 0123) 123 болып өзгереді. active бульдік мәні "true" мәтініне айналды. notes null мәні бос ұяшық ретінде көрсетіледі.
Бұл айырмашылықтардың практикалық салдары бар. Егер сіз JSON-ді CSV-ге түрлендіріп, кейін оны қайта JSON-ге айналдырсаңыз, бастапқы құрылым мен типтер қайтарылмайды. Мысалы, age енді жол ретінде сақталады, ал address.city бөлек баған ретінде қалады.
Түрлендіру процесі: қадамдық алгоритм
Құрал жұмысы үш негізгі қадамнан тұрады:
-
Файлды оқу және тексеру — JSON файлын жүктегенде, құрал оның жарамдылығын тексереді. Егер JSON "кесте тәрізді" болмаса (яғни объектілер массиві немесе массивтер массиві болмаса), "This JSON is invalid or not table‑shaped." қатесі көрсетіледі. Мысалы, жалғыз объект
{"key": "value"}кестеге жарамайды, ал бір объектіден тұратын массив[{"key": "value"}]жарамды. -
Құрылымды талдау — Құрал JSON құрылымын зерттейді:
- Егер бірінші деңгейде элементтер объектілер болса, онда әрбір объект жолға, ал оның кілттері бағандарға айналады. Ұялы объектілер үшін кілттер нүктелік жолмен жазылады (мысалы,
address.city). - Егер бірінші деңгейде массивтер болса, онда әрбір ішкі массив жолға, ал оның элементтері бағандарға айналады (объект кілттері жоқ).
- Егер бірінші деңгейде элементтер объектілер болса, онда әрбір объект жолға, ал оның кілттері бағандарға айналады. Ұялы объектілер үшін кілттер нүктелік жолмен жазылады (мысалы,
-
CSV шығару — Құрал таңдалған бөлгішті (үтір, нүктелі үтір немесе табуляция) пайдаланып, CSV жолдарын жазады. Барлық мәндер мәтінге айналдырылады. Қажетті жағдайларда тырнақшалар автоматты түрде қосылады: егер мәнде бөлгіш, жаңа жол немесе тырнақша болса, ол тырнақшаға алынады. Барлық өңдеу браузерде жүреді — ешқандай дерек серверге жіберілмейді.
Бөлгішті таңдау: неге бұл маңызды
CSV пішімінің стандартты бөлгіші үтір (comma) болып табылады, бірақ көптеген елдерде ондық бөлгіш ретінде үтір қолданылады, сондықтан нүктелі үтір (semicolon) жиі пайдаланылады. Құрал үш бөлгішті ұсынады:
| Бөлгіш | Кең таралған қолданыс | Excel бағдарламасында |
|---|---|---|
| Үтір (,) | АҚШ, Ұлыбритания, Канада | Әдепкі бойынша үтір |
| Нүктелі үтір (;) | Германия, Франция, Испания, Ресей | Ондық бөлгіш үтір болғанда |
| Табуляция (\t) | Дерекқор экспорты, TSV файлдары | Қолмен таңдау керек |
Егер сіздің Excel бағдарламаңыздың аймақтық параметрлері ондық бөлгіш ретінде үтірді пайдаланса, онда стандартты CSV файлын ашу кезінде бағандар дұрыс бөлінбейді. Дәл осы себепті көптеген еуропалық пайдаланушылар нүктелі үтірді таңдайды. Табуляция көбінесе TSV (Tab-Separated Values) деп аталатын пішімде қолданылады және дерекқорлардан экспорттауға ыңғайлы.
Шектеулер мен қате жағдайлар
Құралда бірнеше маңызды шектеулер мен қате жағдайлары бар:
Файл өлшемі — Егер файл тым үлкен болса, "This file is too large. Use a file under ‹max›." қатесі көрсетіледі. Нақты шектеу браузерге және құрылғыға байланысты, бірақ әдетте бірнеше мегабайттан аспайды.
Жолдар саны — Егер кестеде шектен көп жолдар болса, "This table has more than ‹max› rows." қатесі шығады.
Бағандар саны — Егер кестеде тым көп бағандар болса (мысалы, 256-дан көп), "This table has more than ‹max› columns." қатесі пайда болады.
Басқа қателер:
- "Choose one file first." — Файл таңдалмаған кезде.
- "Choose a CSV, JSON or XLSX file." — Қолданылмайтын пішімдегі файл жіберілгенде.
- "Choose a different output format." — Шығыс пішімі CSV-ден басқа болғанда.
- "Could not convert this file." — Түрлендіру мүмкін болмағанда (мысалы, бүлінген JSON).
- "Conversion cancelled." — Пайдаланушы түрлендіруді тоқтатқанда.
- "This conversion is taking too long. Try a smaller file." — Өте үлкен файлдарда уақыт шегінен асқанда.
Типтердің жоғалуы — JSON-дегі сандар, бульдік мәндер және null CSV-де мәтінге айналады. Мысалы, null бос ұяшыққа, true "true" мәтініне, ал 123.45 "123.45" мәтініне айналады. Бастапқы нөлдер жоғалады: "0123" тіпті тырнақшада болса да, 123 болып жазылады, себебі JSON парсері оны сан ретінде өңдейді.
Тырнақшалау ережелері — CSV стандарты (RFC 4180) бойынша, егер өрісте бөлгіш, жаңа жол немесе тырнақша болса, онда бүкіл өріс тырнақшаға алынады, ал ішіндегі тырнақшалар екі еселенеді. Мысалы, He said "Hello" деген мән "He said ""Hello""" болып жазылады.
Кімге бұл қажет және қандай жағдайларда
Бұл құрал бірнеше нақты жағдайларда пайдалы:
- API деректерімен жұмыс — Веб-әзірлеушілер API жауаптарын (әдетте JSON пішімінде) алғанда, оларды Excel-ге импорттау үшін CSV-ге түрлендіру керек. Мысалы, Google Analytics, Stripe немесе Twitter API-дан деректерді экспорттау.
- Дерекқор импорты — MySQL, PostgreSQL сияқты дерекқорлар CSV файлдарын қабылдайды, бірақ JSON импортын тікелей қолдамайды. JSON-ді CSV-ге түрлендіру деректерді жүктеуді жеңілдетеді.
- Құпиялылықты сақтау — Денсаулық сақтау, қаржы немесе заң салаларында деректерді серверге жіберуге болмайды. Барлық өңдеу браузерде жүреді, сондықтан ешқандай дерек сыртқа шықпайды.
- Жылдам прототиптеу — Деректерді талдау үшін кішігірім JSON файлдарын жылдам CSV-ге айналдыру қажет болғанда, Excel-ді ашпай-ақ бірнеше секундта орындауға болады.
- Локалді айырмашылықтар — Ондық бөлгіш ретінде үтір қолданылатын елдерде (мысалы, Қазақстан) нүктелі үтірмен бөлінген CSV файлдары стандартты болып табылады.
Жиі қойылатын сұрақтар
1. Неліктен JSON файлымды CSV-ге түрлендіре алмаймын?
Егер JSON кесте тәрізді болмаса, яғни ол объектілер массиві немесе массивтер массиві болмаса, құрал "This JSON is invalid or not table‑shaped." қатесін көрсетеді. Мысалы, жалғыз объект {"name": "John"} жарамсыз, ал [{"name": "John"}] жарамды. Сондай-ақ, файл тым үлкен болса немесе жолдар/бағандар саны шектен асса, қателер пайда болады.
2. Неліктен сандардың бастапқы нөлдері жоғалады?
JSON пішімінде 0123 деген мән сан ретінде түсіндіріледі, ал сандардың бастапқы нөлдері болмайды. Егер сіз бастапқы нөлдерді сақтағыңыз келсе, JSON-дегі мәнді тырнақшаға алыңыз (мәтін ретінде), мысалы "0123". Бірақ көптеген JSON құралдары тырнақшадағы мәтінді де санға айналдыра алады, сондықтан бұл мәселе толығымен шешілмейді.
3. Браузерде өңдеу дегеніміз не және бұл қаншалықты қауіпсіз?
Барлық өңдеу JavaScript көмегімен браузердің өзінде жүреді. Файл ешқайда жіберілмейді, серверге ешқандай дерек берілмейді. Бұл құпиялылықты қажет ететін жағдайларда (мысалы, медициналық немесе қаржылық деректермен жұмыс) өте маңызды. Дегенмен, өте үлкен файлдар үшін браузердің өңдеу қуаты жеткіліксіз болуы мүмкін.
4. Неліктен менің CSV файлым Excel-де дұрыс ашылмайды?
Егер сіздің Excel бағдарламаңыздың аймақтық параметрлері ондық бөлгіш ретінде үтірді пайдаланса, онда үтірмен бөлінген CSV файлы дұрыс ашылмайды. Мұндай жағдайда нүктелі үтірді (;) таңдаңыз. Сондай-ақ, Excel-де "Деректер" → "Мәтіннен/CSV-ден" опциясын пайдаланып, бөлгішті қолмен орнатуға болады.
5. JSON-дегі массивтер CSV-ге қалай түрлендіріледі?
Егер массивте объектілер болса (мысалы, [{"key": "value1"}, {"key": "value2"}]), онда әрбір объект жеке жолға айналады. Егер массивте басқа массивтер болса (мысалы, [,]), онда әрбір ішкі массив жолға айналады, ал оның элементтері бағандар бойынша орналастырылады. Қарапайым массивтер (мысалы, ``) бір жолға және бірнеше бағанға айналады.
6. Түрлендіру кезінде қандай деректер жоғалады?
Барлық типтік ақпарат жоғалады: сандар, бульдік мәндер, null — бәрі мәтінге айналады. Ұялы құрылым жоғалады: объектілердің ішкі құрылымы нүктелік жолдармен жазылады, бірақ бастапқы иерархия қалпына келтірілмейді. Бірнеше деңгейлі ұялау болса, кейбір құрылымдарды түсіну қиын болуы мүмкін. Сондай-ақ, JSON-де болуы мүмкін формулалар немесе есептеулер еленбейді — тек көрінетін мәндер ғана түрлендіріледі.