آپ کے آلے پر چلتا ہے · آپ کی فائل آپ کے آلے سے باہر نہیں جاتی۔
.json فائل ڈالیں یا API کے جواب سے JSON سیدھا پیسٹ کریں اور ایسی CSV لیں جو Excel، Google Sheets یا کسی بھی امپورٹ اسکرین میں کھلے۔ اوپر کی سطح کی فہرست میں ہر آئٹم ایک قطار بنتی ہے؛ ورنہ دستاویز میں ریکارڈز کی سب سے لمبی فہرست لی جاتی ہے، اس لیے {"results": [...], "count": 2} سے ہر نتیجے کی ایک قطار بنتی ہے؛ جس آبجیکٹ میں کوئی فہرست نہ ہو وہ ایک قطار بنتا ہے۔
اصول طے ہیں تاکہ نتیجہ پہلے سے معلوم ہو: اندر کے آبجیکٹ نقطے سے جڑے کالم بنتے ہیں (address.city)، سادہ قدروں کی فہرست ایک خانے میں سیمی کولن سے جڑ جاتی ہے، اور ریکارڈ کے اندر آبجیکٹس کی فہرست نمبر والے کالم بناتی ہے (items.0.name)۔ سرخی کی قطار ہر ملنے والی کی کا مجموعہ ہے، جس ترتیب سے پہلی بار ملیں، اس لیے جن ریکارڈز میں کوئی فیلڈ نہ ہو ان کا خانہ بس خالی رہتا ہے۔
CSV معیار RFC 4180 کے مطابق لکھی جاتی ہے — کوما، واوین یا لائن بریک والے فیلڈ ٹھیک طرح واوین میں آتے ہیں — UTF-8 میں، اختیاری BOM کے ساتھ تاکہ Excel ہر رسم الخط، اعراب اور خاص علامتیں درست دکھائے۔ جو خانہ =، +، - یا @ سے شروع ہو اس کے آگے اپوسٹروفی لگتی ہے، تاکہ اسپریڈشیٹ اسے فارمولا سمجھ کر چلانے کی بجائے متن کے طور پر دکھائے۔ ڈاؤن لوڈ سے پہلے آپ پہلی 200 سطریں دیکھتے ہیں، اور کچھ بھی آپ کے آلے سے باہر نہیں جاتا۔
ان کے لیے نہیں: بغیر کسی فہرست کے بہت گہرا اکیلا آبجیکٹ — تبدیل تو ہوتا ہے، مگر جدول کی بجائے ایک بہت چوڑی قطار بنتی ہے۔
اوپر کی سطح پر فہرست ہو تو وہی قطاریں ہیں۔ ورنہ ٹول دستاویز کے اندر، آٹھ سطحوں کی گہرائی تک، آبجیکٹس کی سب سے لمبی فہرست تلاش کرتا ہے۔ اس لیے {"response": {"data": {"items": [...]}}} اور {"results": [...], "count": 2, "next": null} دونوں سے ہر آئٹم کی ایک قطار بنتی ہے، اور نتیجے کے نیچے کی سطر استعمال ہونے والی فہرست کا نام بتاتی ہے، جیسے results۔ اس فہرست کے ساتھ رکھی قدریں، جیسے count اور next، کسی ریکارڈ کا حصہ نہیں، اس لیے چھوڑ دی جاتی ہیں۔
دو برابر لمبی فہرستوں میں سے وہ جیتتی ہے جو اوپر کے زیادہ قریب ہو۔ کوئی چھوٹی فہرست چاہیے تو اسے اس کے [ سے ] تک کاپی کریں اور صرف وہی پیسٹ کریں۔ جس دستاویز میں آبجیکٹس کی کوئی فہرست نہ ہو وہ ایک قطار بنتی ہے، اور صرف ایک کی والے لفافے چھوڑ دیے جاتے ہیں، اس لیے {"order": {"id": 7, "total": 12}} سے id اور total کالم بنتے ہیں۔
متن جوں کا توں کاپی ہوتا ہے، تاریخیں بھی، جو اسی شکل میں رہتی ہیں جس میں JSON میں ہوں، جیسے 2024-01-05T10:00:00Z۔ true اور false الفاظ کی صورت لکھے جاتے ہیں۔ null، خالی فہرست اور خالی آبجیکٹ تینوں خالی خانہ بنتے ہیں، اس لیے CSV میں وہ غائب فیلڈ جیسے ہی دکھتے ہیں۔
نمبر بالکل ویسا لکھا جاتا ہے جیسا JSON میں ہے: 1.0، 1.0 ہی رہتا ہے، 1e21، 1e21 رہتا ہے، اور 12345678901234567890 جیسا ID واوین کے بغیر بھی اپنا ہر ہندسہ رکھتا ہے۔ عام JSON ریڈر اس ID کو 12345678901234567000 بنا دیتا ہے۔
فہرستوں کی فہرست ایک سطح تک کھولی جاتی ہے: "m": [[1, 2], [3]] سے m.0 کالم بنتا ہے جس میں 1;2 ہے اور m.1 کالم جس میں 3۔ جو فہرست آبجیکٹس اور سادہ قدریں ملا کر رکھے اس کے ہر آئٹم کو نمبر ملتا ہے، اس لیے "x": [{"z": 1}, 2] سے x.0.z اور x.1 بنتے ہیں۔
کالموں کے نام کیز کو نقطوں سے جوڑ کر بنتے ہیں، اس لیے جس کی میں پہلے سے نقطہ ہو وہ کسی اندرونی کی سے ٹکرا سکتی ہے: {"a.b": 1, "a": {"b": 2}} دو بار a.b بناتا۔ دوسرے کے ساتھ لاحقہ لگ جاتا ہے، اس لیے کالم a.b اور a.b_2 بنتے ہیں اور دونوں قدریں رہتی ہیں۔
کوما عام انتخاب ہے۔ سیمی کولن اس اسپریڈشیٹ کے لیے موزوں ہے جو کسی ایسی زبان پر سیٹ ہو جس میں اعشاریہ کوما سے لکھا جاتا ہے، کیونکہ وہاں کوما والی فائل اکثر ایک ہی کالم میں کھلتی ہے۔ ٹیب اور عمودی لکیر ان سسٹمز کے لیے ہیں جو انہیں مانگیں۔ جداکار کوئی بھی ہو، فائل کا نام .csv ہی ہوتا ہے۔
جو خانہ =، +، - یا @ سے شروع ہو وہ اسپریڈشیٹ کے لیے فارمولا ہے، جسے وہ کھولتے ہی چلا دیتی۔ ایسے خانے کے آگے اپوسٹروفی لگا دی جاتی ہے، وہی نشان جسے اسپریڈشیٹ خود «یہ متن ہے» کے معنی میں لیتی ہیں، اس لیے =1+1 کی جگہ '=1+1 لکھا جاتا ہے۔ -5 یا +3.5 جیسے سادہ نمبر ویسے ہی رہتے ہیں۔
یہ صفحہ دوسری زبانوں میں: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · Bahasa Indonesia · বাংলা