CSV سے JSON تبدیلی: ایک عملی رہنما
یہ صفحہ آپ کو CSV (کوما سے علیحدہ اقدار) فائل کو JSON (JavaScript Object Notation) میں تبدیل کرنے میں مدد دیتا ہے۔ آپ فائل کو گھسیٹ کر یا براؤز کر کے اپ لوڈ کرتے ہیں، پھر آؤٹ پٹ فارمیٹ JSON منتخب کرتے ہیں، CSV کے ڈیلیمیٹر (کوما، سیمی کولن، یا ٹیب) کی نشاندہی کرتے ہیں، اور نتیجہ دیکھ کر ڈاؤن لوڈ کر لیتے ہیں۔ یہ مضمون اس تبدیلی کی بنیادی تکنیکی باتوں، ممکنہ مشکلات، اور اس صفحے کی منفرد خصوصیات پر روشنی ڈالتا ہے۔
CSV سے JSON میں تبدیلی: بنیادی نوعیت کا فرق
اس صفحے کی سب سے اہم بات یہ ہے کہ CSV میں ڈیٹا کی کوئی قسم (type) نہیں ہوتی، جبکہ JSON میں اقسام موجود ہوتی ہیں۔ CSV ہر چیز کو صرف متن (string) کے طور پر ذخیرہ کرتا ہے۔ جب آپ CSV کو JSON میں بدلتے ہیں تو ہر فیلڈ بطور متن رہتا ہے—یعنی نمبر (قیمتیں، مقدار)، تاریخیں، اور صفر سے شروع ہونے والے کوڈز (جیسے پوسٹ کوڈ یا پروڈکٹ کوڈ) خود بخود عددی یا تاریخ کی اقدار میں تبدیل نہیں ہوتے۔ وہ JSON میں بھی بطور متن رہیں گے جب تک آپ دستی طور پر انہیں تبدیل نہ کریں۔
یہ فرق اکثر صارفین کو حیران کر دیتا ہے۔ مثال کے طور پر، اگر آپ کی CSV میں ایک کالم "قیمت" ہے جس میں عددی رقوم درج ہیں، تو تبدیلی کے بعد JSON میں وہ قیمتیں کوٹیشن مارکس ("200.50") کے ساتھ متن کے طور پر آئیں گی۔ اگر آپ بعد میں اس JSON کو JavaScript یا کسی دوسری زبان میں لوڈ کرتے ہیں تو آپ کو خود ان کو عدد میں بدلنا ہوگا۔ اسی طرح، ایک زپ کوڈ "01234" CSV میں صحیح محفوظ رہتا ہے، لیکن اگر وہ خود بخود عدد میں تبدیل ہو جائے تو وہ "1234" بن جاتا ہے۔ یہ ٹول صفر کو محفوظ رکھتا ہے کیونکہ ہر چیز متن ہی رہتی ہے۔
یہ بات اس صفحے کو دوسرے فارمیٹ کی تبدیلیوں سے ممتاز کرتی ہے: جب آپ JSON سے CSV میں جاتے ہیں تو آپ کو ان اقسام کا خیال رکھنا پڑتا ہے، لیکن یہاں صرف متن سے متن کی تبدیلی ہوتی ہے، بغیر کسی خودکار تشریح کے۔
نیسٹڈ ڈھانچے کی عدم موجودگی: CSV کا فلیٹ پن
دوسری اہم خصوصیت یہ ہے کہ CSV سختی سے ایک فلیٹ ٹیبل ہے، اس لیے تبدیلی کے نتیجے میں JSON میں بھی فلیٹ آبجیکٹس کی صف (array of flat objects) ہی ملتی ہے۔ آپ CSV سے درجہ بندی (hierarchy) والا JSON نہیں بنا سکتے—مثلاً ایک آبجیکٹ کے اندر دوسرا آبجیکٹ، یا اریاں۔ ہر قطار ایک آبجیکٹ بنتی ہے، اور ہر کالم اس آبجیکٹ کی ایک کلید (key) بنتا ہے۔ یہ "ٹیبل کی شکل کا JSON" کہلاتا ہے۔
اگر آپ کو نیسٹڈ ڈھانچہ درکار ہو تو آپ کو تبدیلی کے بعد خود دستی طور پر JSON میں ترمیم کرنی پڑے گی، یا کسی اور طریقے سے ڈیٹا کو دوبارہ ترتیب دینا ہوگا۔ اس ٹول میں کوئی اضافی اصول نہیں ہیں جو CSV سے درجہ بندی والا JSON بنا سکیں۔
مثال کے طور پر، فرض کریں ایک CSV میں دو کالم ہیں: "شہر" اور "ملک"۔ JSON میں ہر آبجیکٹ میں دونوں کلیدیں ہوں گی، جیسے {"شہر": "لاہور", "ملک": "پاکستان"}۔ لیکن اگر آپ چاہتے تھے کہ "ملک" کے اندر شہروں کی ایک صف ہو، تو یہ ممکن نہیں کیونکہ CSV کا فلیٹ ڈھانچہ ایسی پیچیدگی کی اجازت نہیں دیتا۔
ڈیلیمیٹر کا انتخاب اور اس کی اہمیت
CSV کو صحیح طریقے سے پارس کرنے کے لیے آپ کو ڈیلیمیٹر بتانا ہوتا ہے۔ اس صفحے پر تین اختیارات ہیں: کوما (,)، سیمی کولن (;) یا ٹیب (\t)۔ دوسرے صفحات (جیسے JSON سے CSV) میں ڈیلیمیٹر کے انتخاب کی ضرورت نہیں ہوتی، لیکن یہاں یہ ایک اہم قدم ہے۔
غلط ڈیلیمیٹر کا انتخاب پارسنگ میں ناکامی کا سبب بن سکتا ہے۔ مثال کے طور پر، اگر آپ کی فائل سیمی کولن سے علیحدہ ہے اور آپ کوما منتخب کرتے ہیں تو ٹول پوری قطار کو ایک ہی کالم سمجھے گا، یا کوما والے متن کو غلط طریقے سے تقسیم کرے گا۔
یاد رکھیں: CSV کا مطلب صرف "کوما سے علیحدہ اقدار" نہیں؛ یہ ایک عام اصطلاح ہے جو کسی بھی ڈیلیمیٹر والی فلیٹ فائل کے لیے استعمال ہوتی ہے۔ اصل میں RFC 4180 معیار کوما کو متعین کرتا ہے، لیکن عملی طور پر سیمی کولن (خاص طور پر یورپی علاقوں میں جہاں کوما اعشاریہ کے لیے استعمال ہوتا ہے) اور ٹیب بھی عام ہیں۔
CSV کے معیاری قواعد اور ان کی کمزوریاں
CSV فارمیٹ میں کوٹیشن مارکس (" ") کا استعمال ان اقدار کو گھیرنے کے لیے کیا جاتا ہے جن میں ڈیلیمیٹر، نئی لائن، یا خود کوٹیشن موجود ہو۔ تاہم، سی ایس وی کے کوٹیشن کے قواعد ہر جگہ یکساں طور پر لاگو نہیں ہوتے۔ بہت سی فائلوں میں کوٹیشن والے اندراجات میں کوما اور نئی لائنیں صحیح طریقے سے انکوڈ نہیں ہوتیں، جس کی وجہ سے پارسنگ میں ناکامی ہوتی ہے۔
یہ صفحہ انہی کمزوریوں کی وجہ سے دوسرے فارمیٹ کی تبدیلیوں (جیسے JSON سے CSV) کے مقابلے میں زیادہ غلطیوں کا شکار ہے۔ خاص طور پر:
- ایمبیڈڈ کوما: اگر کوٹیشن کے بغیر کسی سیل میں کوما ہو، تو وہ نئے کالم کا آغاز سمجھا جائے گا۔
- سیل کے اندر نئی لائنیں: کچھ CSV میں ایک سیل میں متعدد سطریں ہوتی ہیں (جیسے ایڈریس)، لیکن اگر ان کو کوٹیشن میں نہ لیا جائے تو پارسر نئی لائن کو نئی قطار سمجھے گا۔
- غیر متوازن کوٹیشن: ایک کوٹیشن کھلنا اور بند نہ ہونا پوری فائل کو بگاڑ دیتا ہے۔
اس صفحے پر لائن بریک جو کوٹیشن والے فیلڈ کے اندر ہوں، وہ JSON میں بطور \n (نئی لائن کیریکٹر) محفوظ رہتے ہیں۔ یہ ایک اہم تفصیل ہے: آپ اصل ڈیٹا میں موجود نئی لائن کو کھوتے نہیں، لیکن اسے JSON سٹرنگ میں ایک خاص کیریکٹر کے طور پر دیکھا جائے گا۔
غلطی کے حالات اور صارف کو نظر آنے والے پیغامات
جب CSV کو پارس نہیں کیا جا سکتا (مثلاً کوٹیشن کی خرابی یا متضاد کالم کی تعداد)، تو ٹول یہ پیغام دکھاتا ہے: "یہ CSV پارس نہیں کیا جا سکا۔" یہ ایک واضح اور براہ راست اطلاع ہے۔
دوسرے ممکنہ پیغامات میں شامل ہیں:
- "اس فائل میں کوئی ٹیبل قطاریں نہیں ہیں۔" - اگر فائل میں ڈیٹا کی صفیں نہ ہوں۔
- "اس ٹیبل میں ‹زیادہ سے زیادہ› سے زیادہ قطاریں ہیں۔" اور "اس ٹیبل میں ‹زیادہ سے زیادہ› سے زیادہ کالم ہیں۔" - حدود سے تجاوز کرنے پر۔
- "یہ فائل بہت بڑی ہے۔ ‹زیادہ سے زیادہ› سے چھوٹی فائل استعمال کریں۔" - فائل سائز کی حد سے زیادہ ہونے پر۔
- "پہلے ایک فائل منتخب کریں۔" - اگر کوئی فائل منتخب نہ کی گئی ہو۔
- "CSV، JSON یا XLSX فائل منتخب کریں۔" - غلط فارمیٹ پر۔
- "یہ تبدیلی بہت زیادہ وقت لے رہی ہے۔ چھوٹی فائل آزمائیں۔" - ٹائم آؤٹ پر۔
یہ پیغامات صارف کو فوری طور پر بتاتے ہیں کہ مسئلہ کیا ہے، بغیر کسی تکنیکی تفصیل کے۔
کلائنٹ سائڈ پروسیسنگ اور ڈیٹا کی پرائیویسی
یہ صفحہ ایک اور اہم خصوصیت رکھتا ہے: تبدیلی مکمل طور پر براؤزر میں انجام پاتی ہے، سرور پر کوئی ڈیٹا اپ لوڈ نہیں ہوتا۔ اس کا مطلب ہے کہ آپ کی CSV فائل آپ کے اپنے کمپیوٹر سے کہیں نہیں جاتی۔ یہ ان صارفین کے لیے خاص طور پر مفید ہے جو حساس ڈیٹا (جیسے ذاتی معلومات، مالی ریکارڈ، یا کمپنی کے اندرونی ڈیٹا) کے ساتھ کام کرتے ہیں اور اسے تیسرے فریق کے سرور پر بھیجنا نہیں چاہتے۔
اگرچہ یہ ایک عام خصوصیت ہے جو کئی ویب ٹولز میں پائی جاتی ہے، لیکن اس صفحے کی تشہیر میں اس کا ذکر اہم ہے، خاص طور پر انڈسٹری کے پیشہ ور افراد کے لیے جو تعمیل (compliance) کے تقاضوں کی وجہ سے ڈیٹا کو مقامی رکھنے کو ترجیح دیتے ہیں۔
اکثر پوچھے گئے سوالات (FAQ)
سوال 1: کیا یہ ٹول خود بخود نمبروں کو عددی JSON اقدار میں تبدیل کر دے گا؟ نہیں۔ CSV میں تمام اقدار متن ہیں، اور یہ ٹول بغیر کسی تبدیلی کے انہیں متن ہی رکھتا ہے۔ اگر آپ کو عددی اقدار درکار ہیں تو آپ کو بعد میں دستی طور پر تبدیل کرنا ہوگا۔
سوال 2: اگر میری CSV میں صفر سے شروع ہونے والا زپ کوڈ ہے تو کیا وہ محفوظ رہے گا؟ جی ہاں۔ کیونکہ ہر فیلڈ بطور سٹرنگ محفوظ ہوتا ہے، زپ کوڈ "01234" اپنی original شکل میں رہے گا۔ تاہم، اگر آپ JSON کو کسی ایسے ماحول میں لوڈ کرتے ہیں جو خود بخود ٹائپ کاسٹ کرتا ہے، تو صفر غائب ہو سکتے ہیں۔
سوال 3: کیا میں ایک سے زیادہ CSV فائلیں ایک ساتھ تبدیل کر سکتا ہوں؟ فی الحال یہ صفحہ ایک وقت میں صرف ایک فائل قبول کرتا ہے۔ آپ کو ہر فائل کے لیے علیحدہ عمل کرنا ہوگا۔
سوال 4: میرے CSV میں کچھ سیلز میں کوما ہے، لیکن کوٹیشن مارکس نہیں ہیں۔ کیا یہ کام کرے گا؟ یہ ممکن ہے کہ کام نہ کرے۔ اگر کوٹیشن کے بغیر کوما کسی سیل کے اندر ہو تو پارسر اسے نیا کالم سمجھے گا، جس کی وجہ سے کالم کی تعداد متضاد ہو جائے گی اور تبدیلی ناکام ہو سکتی ہے۔ بہتر ہے کہ آپ CSV کو پہلے درست کریں۔
سوال 5: کیا میری فائل میں نئی لائنیں سیل کے اندر محفوظ رہیں گی؟
جی ہاں، اگر وہ نئی لائنیں کوٹیشن مارکس کے اندر ہوں تو JSON میں انہیں \n کیریکٹر کے طور پر رکھا جائے گا۔ اگر کوٹیشن نہ ہوں تو وہ نئی لائن کو قطار کا اختتام سمجھا جائے گا اور ڈیٹا بگڑ جائے گا۔
سوال 6: کیا یہ ٹول بڑی فائلوں کو سنبھال سکتا ہے؟ فائل کے سائز اور قطاروں/کالموں کی تعداد کی حدیں ہیں۔ اگر آپ کی فائل ان حدود سے تجاوز کرتی ہے تو آپ کو ایک واضح پیغام نظر آئے گا۔ چھوٹی فائلوں کے ساتھ شروع کرنا بہتر ہے۔