JSON-оос CSV-д хөрвүүлэх: Бүтэц, дүрэм, практик
Энэ хуудас нь нэг JSON файлыг (чирэх эсвэл товч дарж оруулах) CSV файл болгон хувиргадаг. Хэрэглэгч гаралтын CSV-ийн тусгаарлагчийг (таслал, цэгтэй таслал, эсвэл tab) сонгох, хөрвүүлсэн хүснэгтийг урьдчилан харах, файлыг татаж авах боломжтой. Бүх боловсруулалт хэрэглэгчийн хөтөч дотор явагдана – ямар ч өгөгдөл серверт илгээгдэхгүй.
Энэ хуудас юугаараа онцлог вэ?
JSON-аас CSV-рүү хөрвүүлэх нь CSV-аас Excel эсвэл Excel-аас JSON-д хөрвүүлэхээс үндсээрээ ялгаатай. Энэ чиглэлд шатлалт, төрөлжсөн өгөгдлийн форматыг хавтгай, төрөлгүй хүснэгт болгон тэгшлэх (flatten) шаардлагатай. JSON нь объект, массив, тоо, логик утга (boolean) болон null-ийг үүрлэсэн бүтцэд дэмждэг. Харин CSV нь ямар ч төрөл, үүрлэх шатлал, олон хуудасгүй. Хөрвүүлэлт нь бүх төрлийн мэдээлэл, үүрлэх бүтэц, олон хуудас (JSON-д байхгүй), форматлалтыг алддаг.
JSON-ийн үүрлэсэн объектуудыг хавтгай CSV-д төлөөлөхийн тулд тусгай арга хэрэглэгддэг. Тухайлбал, address.city гэх мэт цэгтэй зам (dot-path) тэмдэглэгээгээр түлхүүрүүдийг хавтгайруулна. Объектуудын массив нь хүснэгтийн мөр болдог; массивуудын массивыг мөр хэлбэрээр хадгална. CSV нь тусгаарлагчийг ашигладаг учраас таслал болон шинэ мөрүүдийг хашилтанд оруулах шаардлагатай – хэрэгсэл автоматаар үүнийг хийдэг. Гэхдээ тоон доторх тэргүүлэгч тэгүүд алдагдаж болзошгүй.
Хөрвүүлэхийн өмнө хэрэглэгч үүрлэсэн талбаруудыг хэрхэн төлөөлөхийг шийдэх ёстой (хэрэгсэл анхдагчаар цэгтэй замыг ашигладаг).
Оролт ба гаралт
Оролт:
- Нэг JSON файл (хүлээн зөвшөөрөгдөх форматууд: CSV, JSON, XLSX – энд зөвхөн JSON хамаарна).
- Хэрэглэгчийн сонгосон гаралтын формат: CSV.
- CSV тусгаарлагч: Таслал, Цэгтэй таслал, эсвэл Tab.
Гаралт:
- CSV файл татаж авахад бэлэн.
- Хөрвүүлсэн хүснэгтийн урьдчилсан харагдац.
- Мөр ба баганын тоо.
- Гаралтын файлын хэмжээ.
Дүрэм ба хязгаарлалтууд
Хэрэгсэл нь зөвхөн харагдах утгуудыг хувиргадаг; томьёо эсвэл код боловсруулагдахгүй.
JSON нь хүснэгт хэлбэртэй (table‑shaped) байх ёстой – объектуудын нэг массив, эсвэл массивуудын массив. Хэрэв JSON хүчингүй эсвэл хүснэгт хэлбэрт биш бол “This JSON is invalid or not table‑shaped.” алдаа гарна.
Объектуудын массив – объект тус бүр мөр болж, түлхүүрүүд багана болно. Үүрлэсэн объектын түлхүүрүүд цэгтэй замаар хавтгайрна.
Массивуудын массив – дотоод массив тус бүр мөр болж, элементүүд багана болно (объектын түлхүүр байхгүй).
Хэрэгсэл нь JSON төрлийг хадгалахгүй – бүх утгууд CSV-д мөр (string) болно.
Хөрвүүлэх үед үүрлэх бүтэц алдагддаг; зөвхөн хавтгайруулсан цэгтэй замын дүрслэл үлддэг.
CSV-ийн хашилтын дүрмүүд автоматаар хэрэгжинэ (таслал, шинэ мөр, утга доторх хашилт).
Файлын хэмжээний хязгаар: Хэрэв файл хэт том бол “This file is too large. Use a file under ‹max›.” алдаа гарна.
Мөр/баганын хязгаар: “This table has more than ‹max› rows.” болон “This table has more than ‹max› columns.” алдаа гарна.
Бусад алдааны мессежүүд:
- “Choose one file first.”
- “Choose a CSV, JSON or XLSX file.”
- “Choose a different output format.”
- “Could not convert this file.”
- “Conversion cancelled.”
- “This conversion is too long. Try a smaller file.”
Боловсруулалт нь зөвхөн хэрэглэгчийн талд явагдана; өгөгдөл хөтөчөөс гардаггүй.
Хэнд энэ хэрэгсэл хэрэгтэй вэ?
- API хариунаас JSON файл авсан хүн үүнийг Excel, Google Sheets эсвэл өгөгдлийн сан руу импортлохын тулд CSV хэрэгтэй.
- Бүтэцлэгдсэн JSON өгөгдлийг тайлан, анализ хийхэд хавтгай хүснэгт болгон хувиргах хүсэлтэй хүн.
- Өгөгдлийг серверт илгээхгүйгээр (нууцлал мэдрэмтгий ажлын урсгал) хувиргах шаардлагатай хүн.
- Өөр тусгаарлагч (жишээ нь цэгтэй таслал) хэрэглэдэг локалд ажилладаг хүн.
- Өгөгдлийн дамжуулалтын шуурхай прототип хийж, хөтөч дотор хурдан JSON-аас CSV хөрвүүлэх хэрэгтэй хүн.
JSON ба CSV-ийн бүтцийн ялгаа
JSON нь шатлалт, төрөлжсөн формат. Жишээлбэл:
{
"name": "Болд",
"age": 30,
"address": {
"city": "Улаанбаатар",
"district": "Хан-Уул"
},
"scores":
}
Энэ нь address объект дотор city болон district-ийг агуулж, scores массивтай. CSV нь ийм бүтцийг шууд дэмжихгүй. Хэрэгсэл үүнийг дараах байдлаар хавтгайруулна:
| name | age | address.city | address.district | scores |
|---|---|---|---|---|
| Болд | 30 | Улаанбаатар | Хан-Уул | "" |
Энд scores массив нь мөр хэлбэрээр (хэрэгсэл массив элементүүдийг тусдаа багана болгон хуваахгүй) нэг баганад хашилттайгаар бичигдсэн. Хэрэв объектуудын массив байвал:
[
{"name": "Болд", "age": 30},
{"name": "Сүрэн", "age": 25}
]
Энэ нь хоёр мортой хүснэгт болно.
Хоосон утга (null) нь CSV-д хоосон мөр болж хувирна. Логик true/false нь "true"/"false" мөр болно. Тоонуудын тэргүүлэгч тэг (жишээ нь утасны дугаар "0999123456") нь JSON дотор мөр хэлбэрээр бичигдсэн бол хадгалагдана, гэхдээ тоон төрөлтэй байсан бол 999123456 болж алдагдаж болзошгүй.
Хувиргалтын үед анхаарах зүйлс
Төрлийн алдагдал: JSON-ийн тоонууд (number), логик (boolean), null нь CSV-д автоматаар мөр болно. Энэ нь Excel-д импортлоход тоо биш текст болж орж, тооцоололд саад учруулж болно.
Тусгаарлагчийн зөрчил: Хэрэв өгөгдлийн утга дотор таслал байвал (жишээ нь “Улаанбаатар, Монгол”), хэрэгсэл үүнийг хашилтанд оруулна. Хэрэв хашилт өөрөө утга дотор байвал (жишээ нь He said "Hello"), давхар хашилт ("") ашиглан кодчилно.
Массив ба үүрлэсэн объект: JSON дотор массив дотор объектуудын массив байвал (жишээ нь {"orders": [{"id":1},{"id":2}]}), хөрвүүлэлт нь orders баганад "[{"id":1},{"id":2}]" гэх мэт JSON мөр болгон бичиж болно. Энэ нь хүснэгт хэлбэрт тохирохгүй байж болзошгүй.
Хүснэгт хэлбэрийн шалгалт: Хэрэв JSON нь энгийн объект байвал (“{...}”), хэрэгсэл “not table‑shaped” алдаа өгнө. Зөвхөн массиваар эхэлсэн JSON л хүлээн авна. Жишээ нь API олон объект буцаах “results” түлхүүрийг агуулсан объект – үүнийг хөрвүүлэхийн тулд эхлээд “results” массивыг гаргаж авах хэрэгтэй.
Файлын хэмжээ ба гүйцэтгэл: Бүх боловсруулалт хөтөч дотор явагдах тул маш том файл (хэдэн зуун мегабайт) нь хөтөчийн санах ойг хэтрүүлэх эсвэл удаан ажиллахад хүргэж болно. Систем “This conversion is too long. Try a smaller file.” алдаа гаргаж болно.
Тусгаарлагчийн сонголт: Хэрэглэгч таслал, цэгтэй таслал эсвэл tab-г сонгох боломжтой. Сонголт нь зорилтот программ хангамжийн локал тохиргооноос хамаарна. Жишээ нь Европын зарим орнууд таслалыг аравтын бутархай хэлбэрээр хэрэглэдэг тул CSV нь цэгтэй таслал тусгаарлагчтай байх нь тохиромжтой.
Түгээмэл асуултууд
1. JSON файлаа чирэхэд “This JSON is invalid or not table‑shaped” гэсэн алдаа гарч байна. Яах вэ?
Файлын агуулга массиваар эхэлсэн эсэхийг шалгана уу. Жишээ нь [{...}], [[...]] хэлбэртэй байх ёстой. Хэрэв таны JSON нь {"data": [...]} гэх мэт объект дотор массив агуулж байвал эхлээд data түлхүүрийг гаргаж аваад тэр массиваа хуулах хэрэгтэй.
2. Хувиргасны дараа тоонуудын тэргүүлэгч тэг алга болсон. Яаж засах вэ?
Тоонууд нь JSON дотор тоон төрөлтэй байсан бол тэргүүлэгч тэг хуулийн дагуу хаягдана. Урьдчилан JSON-д тэдгээрийг мөр болгон бичвэл (жишээ нь "0999"), CSV-д ч мөр хэлбэрээр хадгалагдана.
3. Хэрэгсэл өгөгдлийг серверт илгээдэг үү? Үгүй. Бүх боловсруулалт таны хөтөч дотор JavaScript ашиглан явагдана. Файлын агуулга таны компьютерээс гардаггүй.
4. Хэдэн мөр, багана хүртэл дэмжигддэг вэ?
Тодорхой дээд хязгаарыг ‹max› гэсэн тэмдэглэгээгээр хэрэгсэл харуулна. Жишээ нь 100,000 мөр эсвэл 1,000 баганаас хэтэрсэн файлыг алдаа гаргаж болно. Яг тоо нь хэрэгслийн хувилбараас хамаарна.
5. Олон хуудастай Excel файлыг JSON-д хувиргах үү? Энэ хэрэгсэл зөвхөн JSON-аас CSV-д хөрвүүлдэг. Хэрэв танд Excel файл байгаа бол эхлээд JSON болгон хөрвүүлэх өөр хэрэгсэл ашиглах хэрэгтэй.
6. Массив массивын дотор байвал яах вэ?
Хэрэв JSON нь [,] гэх мэт жигд бус массивуудын массив бол, дотоод массив бүр нэг мөр болж, хамгийн урт массивын уртаар багана нөхөгдөнө. Дутуу элементүүд хоосон байна.
7. Хувиргасан CSV файлыг Excel-д нээхэд кирилл үсэг муухай харагдаж байна. Яаж засах вэ? CSV файлыг Excel-д нээхдээ “Өгөгдөл авах” (Get Data) командыг ашиглаж, UTF-8 кодчилол сонгоно уу. Эсвэл файлыг NotePad++ гэх мэт засварлагчаар нээж, UTF-8 BOM тэмдэгт нэмээд хадгалаарай.