CSV کو JSON میں تبدیل کریں
CSV فائل یا پیسٹ کی گئی ٹیبل کو صاف JSON میں بدلیں — نمبرز اور بولینز درست قسم کے ساتھ، ڈاٹ والے ہیڈرز سے بنے نیسٹڈ آبجیکٹس، اور بالکل وہی شکل جس کی آپ کا کوڈ توقع کرتا ہے۔
- کبھی محفوظ نہیں کی جاتی
- نہ قطار، نہ انتظار
- نہ سائن اپ، نہ واٹر مارک
یہ کیسے کام کرتا ہے
CSV شامل کریں
.csv یا .tsv فائل ڈراپ کریں، یا ڈیٹا پیسٹ کریں۔ ڈیلیمیٹر اور انکوڈنگ خود پہچان لیے جاتے ہیں۔
شکل منتخب کریں
آبجیکٹس کی array، arrays کی array، پہلے کالم کی کیز والا آبجیکٹ، یا JSON Lines — ساتھ میں ٹائپس، خالی ویلیوز اور انڈینٹیشن۔
کاپی یا ڈاؤن لوڈ کریں
JSON کو کلپ بورڈ پر کاپی کریں یا .json فائل کے طور پر محفوظ کریں۔
جہاں CSV دکھنے سے زیادہ مبہم ہے
CSV کا کوئی اصل معیار نہیں — 2005 کی ایک مشاورتی اسپیسیفکیشن ہے جو بتاتی ہے کہ زیادہ تر ٹولز کیا کرتے ہیں، اور بہت سا سافٹ ویئر کچھ اور کرتا ہے۔ اس لیے پہلا کام یہ سمجھنا ہے کہ فائل اصل میں کیا ہے: ویلیوز کوما، سیمی کولن یا ٹیب سے الگ ہیں (یورپی لوکیلز سیمی کولن ایکسپورٹ کرتے ہیں، کیونکہ کوما ان کا اعشاری نشان ہے)، پہلی رو ہیڈر ہے یا نہیں، اور کوٹنگ کیسے ہوتی ہے۔ کوٹ شدہ فیلڈ میں قانونی طور پر کوما، نئی لائنیں اور دہرے کوٹ مارکس ہو سکتے ہیں، اسی لیے کوما پر تقسیم کرنا اسے پڑھنے کا غلط طریقہ ہے اور اسی لیے سادہ پارسر پتے والی ہر فائل خراب کر دیتا ہے۔
ٹائپس دوسرا کام ہیں، اور JSON کی وہ رائے ہے جو CSV کی نہیں۔ CSV سیل میں صرف ٹیکسٹ ہوتا ہے؛ JSON نمبرز، اسٹرنگز، بولینز اور null میں فرق کرتا ہے۔ کسی کو فیصلہ کرنا ہوتا ہے کہ کون کیا ہے، اور اہم فیصلے وہی ہیں جو غلط ہو جاتے ہیں: پوسٹ کوڈ، فون نمبر یا اکاؤنٹ ریفرنس میں شروع کا صفر اہم ہے، اس لیے 01234 جیسی ویلیو کو نمبر 1234 بننے کے بجائے اسٹرنگ رہنا چاہیے۔ یہی بات لمبے شناختی نمبروں پر لاگو ہوتی ہے، جو JSON نمبرز کے طور پر تقریباً نو کواڈریلین سے آگے درستگی کھو دیتے ہیں۔
تاریخیں اسی ٹیکسٹ کے طور پر رہتی ہیں جو وہ تھیں، کیونکہ JSON میں تاریخ کی کوئی قسم نہیں۔ 2024-03-05 اسٹرنگ "2024-03-05" کے طور پر نکلتی ہے، اور یہ کوئی کمی نہیں بلکہ ایمان دارانہ جواب ہے — متبادل اندازہ لگانا ہے، اور اندازے سے ہی 03/05/2024 ایک ملک میں مارچ اور دوسرے میں مئی بن جاتی ہے۔ انہیں تبدیل کرنا اس چیز کا فیصلہ ہے جو JSON استعمال کرتی ہے، کیونکہ وہی جانتی ہے کہ اسے کون سا فارمیٹ چاہیے۔
انکوڈنگ آخری خاموش ناکامی ہے۔ CSV اپنی کریکٹر انکوڈنگ کا کوئی ذکر ساتھ نہیں رکھتی، اس لیے Windows-1252 میں محفوظ کی گئی فائل UTF-8 کے طور پر پڑھی جائے تو بالکل انہی رو میں بگڑے ہوئے حروف آتے ہیں جن میں لہجے والے نام ہوں — اور شروع کا بائٹ آرڈر مارک، جو Excel شامل کرتا ہے، اگر سنبھالا نہ جائے تو پہلے فیلڈ کے نام میں فالتو حروف کے طور پر نظر آتا ہے۔ دونوں کسی کنورٹر کی نہیں بلکہ CSV کی خاصیتیں ہیں۔
جب آپ کو کچھ اور چاہیے
میموری میں نہ سما سکنے والی بڑی فائلوں کے لیے، یا کسی بھی اسکرپٹ والے کام کے لیے، csvkit خاص اسی مقصد کے لیے بنا ہے: csvjson --stream data.csv بتدریج کنورٹ کرتا ہے، csvlook پہلے دکھاتا ہے کہ آپ کے پاس کیا ہے، اور csvclean وہ بے ترتیب رو ٹھیک کرتا ہے جو آگے سب کچھ توڑ دیتی ہیں۔ Miller — mlr --icsv --ojson cat data.csv — یہی کام کافی تیزی سے کرتا ہے اور لائن ڈیلیمیٹڈ JSON بھی سنبھالتا ہے، جو زیادہ تر ڈیٹا پائپ لائنز کو اصل میں چاہیے۔
جب سہولت سے زیادہ ٹائپس اہم ہوں تو کنورژن کوڈ میں کریں، جہاں ٹائپس کا اندازہ لگانے کے بجائے انہیں واضح طور پر بتایا جائے۔ Python کا pandas واضح dtype میپنگ کے ساتھ، یا اسکیما والی ایک چھوٹی اسکرپٹ، یقینی بناتی ہے کہ پوسٹ کوڈ پوسٹ کوڈ ہی رہے اور شناختی نمبر کا ہر ہندسہ برقرار رہے — جس کی کوئی خودکار اندازہ کاری ایسی فائل پر ضمانت نہیں دے سکتی جو اس نے پوری نہیں دیکھی۔
اکثر پوچھے جانے والے سوالات
مجھے JSON کی کون سی شکل منتخب کرنی چاہیے؟
آبجیکٹس کی array — [{"name": "Ada", "age": 36}] — تقریباً ہر API اور لائبریری کے لیے موزوں ہے۔ arrays کی array سب سے مختصر ہے۔ کیز والا آبجیکٹ کوڈ کو ID سے ریکارڈز ڈھونڈنے دیتا ہے۔ JSON Lines ہر لائن میں ایک ریکارڈ رکھتی ہے، اسٹریمنگ ٹولز، BigQuery اور لاگ پائپ لائنز کے لیے۔
نمبرز اور بولینز کا فیصلہ کیسے ہوتا ہے؟
ہر کالم کے لیے ایک بار: کالم تبھی نمبرز بنتا ہے جب اس کی ہر ویلیو نمبر ہو، اس لیے "007" اور 7 کبھی ایک ہی کی کے تحت ملے جلے نہیں آتے۔ شروع میں صفر والی ویلیوز، اور وہ IDs جو اتنی لمبی ہوں کہ JavaScript انہیں بالکل درست نہ رکھ سکے، اسٹرنگز رہتی ہیں۔ true اور false بولینز بنتے ہیں، اور خالی سیلز null بنتے ہیں — یا خالی اسٹرنگز، یا چھوڑ دیے جاتے ہیں، جیسا آپ چاہیں۔
کیا یہ نیسٹڈ JSON بنا سکتا ہے؟
جی ہاں۔ نیسٹنگ آن ہو تو address.city جیسا ہیڈر {"address": {"city": …}} بن جاتا ہے، اور tags.0، tags.1 ایک array بن جاتے ہیں۔
کیا میرا ڈیٹا کہیں محفوظ کیا جاتا ہے؟
نہیں۔ کچھ بھی کہیں نہیں بھیجا جاتا اور کچھ بھی محفوظ نہیں کیا جاتا۔
سیمی کولن، ٹیب اور دوسری انکوڈنگز کا کیا ہوگا؟
کوما، سیمی کولن، ٹیب اور پائپ خود بخود پہچانے جاتے ہیں، اور اسی طرح UTF-8، UTF-16 اور پرانی Windows انکوڈنگز بھی، اس لیے لہجے والے اور غیر لاطینی حروف والا ٹیکسٹ صحیح سلامت آتا ہے۔
ڈپلیکیٹ یا خالی کالم ناموں کا کیا ہوتا ہے؟
ڈپلیکیٹس کو ایک نمبر ملتا ہے (name، name_2) اور خالی ہیڈرز کو ان کی جگہ کے لحاظ سے نام ملتا ہے (column_3)، اس لیے کوئی ویلیو اوور رائٹ نہیں ہوتی اور آپ کو بتا دیا جاتا ہے کہ کیا بدلا۔
جاننا مفید ہے: تاریخیں آپ کی فائل والے ٹیکسٹ کے طور پر ہی رہتی ہیں، کیونکہ JSON میں تاریخ کی کوئی قسم نہیں۔ بہت بڑی فائلیں آپ کے براؤزر کی میموری سے محدود ہیں۔
یہ ٹول اپنی ویب سائٹ پر لگائیں
کسی بھی بلاگ، کلاس پیج یا ہیلپ آرٹیکل کے لیے مفت۔ ایک اسنیپٹ پیسٹ کریں اور آپ کے وزیٹرز اسے سیدھا آپ کے صفحے پر استعمال کر سکیں گے۔