JSON فارمیٹ کریں
JSON کی ایک لمبی لائن کو پڑھنے کے قابل بنائیں، یا اسے واپس سمیٹ دیں۔ بڑے نمبرز کا ہر ہندسہ برقرار رہتا ہے، جس میں زیادہ تر آن لائن فارمیٹرز خاموشی سے غلطی کرتے ہیں۔ کچھ بھی محفوظ نہیں کیا جاتا۔
- کبھی محفوظ نہیں کی جاتی
- نہ قطار، نہ انتظار
- نہ سائن اپ، نہ واٹر مارک
فارمیٹ شدہ JSON یہاں نظر آئے گا۔
یہ کیسے کام کرتا ہے
اپنا JSON پیسٹ کریں
یا .json فائل ڈراپ کریں۔ جو کچھ آپ پیسٹ کرتے ہیں وہ اسی صفحے میں رہتا ہے — کچھ بھی محفوظ نہیں کیا جاتا۔
انڈینٹ چنیں
دو اسپیس، چار، ٹیبز، یا منیفائی کر کے ایک ہی لائن۔ آپ کا انتخاب اگلی بار کے لیے یاد رکھا جاتا ہے۔
کاپی یا ڈاؤن لوڈ کریں
نتیجہ کاپی کریں، یا فائل کے طور پر محفوظ کریں۔ اگر JSON خراب ہے تو اس کے بجائے آپ کو لائن، کالم اور حرف ملتا ہے۔
دوبارہ پرنٹ ہونے کے بعد کیا جوں کا توں رہتا ہے
فارمیٹنگ کا مطلب ہے پارس کرنا اور دوبارہ پرنٹ کرنا، اور صرف نمبرز ہی وہ حصہ ہیں جو بالکل آپ کے لکھے ہوئے ٹیکسٹ کی صورت میں آگے جاتے ہیں۔ یہ بینر میں گنے جانے والے بڑے نمبرز والی صورت سے وسیع ہے: جس بھی نمبر کی مختصر ترین JavaScript شکل آپ کی شکل سے مختلف ہو وہ اپنے سورس سے دوبارہ لکھا جاتا ہے، اس لیے 1.10 کا آخری صفر برقرار رہتا ہے، 1e5 ایکسپونینٹ شکل میں رہتا ہے اور منفی صفر منفی ہی رہتا ہے۔ وارننگ میں صرف غیر محفوظ پورے نمبرز گنے جاتے ہیں، کیونکہ انہی میں متبادل ایک صاف ستھری شکل نہیں بلکہ خاموش خرابی ہے۔
اسٹرنگز ٹیکسٹ کی صورت میں آگے نہیں جاتیں۔ دستاویز پڑھتے وقت escapes ڈیکوڈ ہوتے ہیں اور پرنٹ کرتے وقت نئے سرے سے لکھے جاتے ہیں، اس لیے \u0041 واپس A بن کر آتا ہے اور escape کیا گیا فارورڈ سلیش بغیر escape کے آتا ہے۔ ویلیو یکساں ہے اور بائٹس نہیں، جو صرف ایک صورت میں اہم ہے اور وہاں بہت اہم ہے: اگر آگے کی کوئی چیز دو JSON فائلوں کا بائٹ بہ بائٹ موازنہ کرتی ہے تو ان میں سے ایک کو فارمیٹر سے گزارنا بے اثر عمل نہیں۔
دوبارہ فارمیٹ پر بھروسا کرنے سے پہلے آبجیکٹ کی سطح کے دو رویے جاننا مفید ہے۔ ڈپلیکیٹ کیز خاموشی سے حل ہو جاتی ہیں، آخری والی جیت جاتی ہے، بالکل ویسے جیسے براؤزر کا اپنا پارسر انہیں حل کرتا ہے — دو "id" فیلڈز والی دستاویز بغیر کسی شکایت کے فارمیٹ ہوتی ہے اور ایک ہی کے ساتھ واپس آتی ہے، اور کچھ بھی نہیں بتاتا کہ دوسری موجود تھی۔ اور کیز کی ترتیب آپ کی فائل والی صرف ان کیز کے لیے رہتی ہے جو پورے نمبر نہیں: "1"، "2" اور "name" رکھنے والا آبجیکٹ ہندسوں والی کیز کو پہلے، عددی ترتیب میں، لوٹاتا ہے، کیونکہ خود JavaScript آبجیکٹ کی پراپرٹیز کو اسی طرح ترتیب دیتی ہے۔ عام کیز اسی ترتیب میں رہتی ہیں جس میں آپ نے لکھیں۔
جب آپ کو کچھ اور چاہیے
اگر آپ کے پاس tsconfig.json، ESLint کنفیگ یا VS Code سیٹنگز فائل ہے تو یہ صفحہ کمنٹس اور ٹریلنگ کوما کو نظر انداز کر کے فارمیٹ کرنے کے بجائے ان کی نشاندہی کرے گا، جو JSON ٹول کے لیے صحیح جواب ہے اور آپ کی فائل کے لیے غلط ٹول۔ یہ JSONC ہیں، اور آپ کا ایڈیٹر انہیں پہلے سے پارس کرتا ہے؛ کمانڈ لائن پر json5 اور dasel دونوں انہیں JSON ہونے کا دعویٰ کیے بغیر پڑھ لیتے ہیں۔
صرف انڈینٹ بدلنے سے آگے کی کسی بھی چیز کے لیے فارمیٹر غلط قسم کا ٹول ہے۔ jq ایک ہی ایکسپریشن میں وہ کرتا ہے جس کا کوئی کنٹرول پیسٹ باکس میں نہیں: jq -S . ہر آبجیکٹ کی کیز ترتیب دیتا ہے تاکہ دو ریسپانسز کا موازنہ ہو سکے، jq 'del(.token)' کسی کو پے لوڈ دکھانے سے پہلے ایک فیلڈ ہٹا دیتا ہے، اور jq -c آبجیکٹس کی array کو اس JSON Lines میں سمیٹ دیتا ہے جو پائپ لائن چاہتی ہے۔ یہ کلپ بورڈ کے بجائے فائل پڑھتا ہے، اور جب دستاویز اتنی بڑی ہو جائے کہ آرام سے سلیکٹ نہ ہو سکے تو یہی فرق ہے۔
اکثر پوچھے جانے والے سوالات
کیا میرا JSON کہیں محفوظ کیا جاتا ہے؟
نہیں۔ نہ کوئی سرور کال ہے نہ لاگنگ، اور کچھ بھی محفوظ نہیں کیا جاتا۔ صفحہ لوڈ ہونے کے بعد آپ انٹرنیٹ بند کر سکتے ہیں اور یہ کام کرتا رہتا ہے۔ یہاں یہ بات جتنی لگتی ہے اس سے زیادہ اہم ہے: لوگ آن لائن فارمیٹر میں API ریسپانسز، کنفیگ فائلیں اور ایرر پے لوڈز پیسٹ کرتے ہیں، اور ان میں اکثر ٹوکنز، کسٹمرز کے ریکارڈز اور اندرونی ہوسٹ نیمز ہوتے ہیں۔
جب دوسرے فارمیٹرز نہیں رکھتے تو یہ بڑے نمبرز کو درست کیوں رکھتا ہے؟
کیونکہ تقریباً ہر دوسرا فارمیٹر انہیں خاموشی سے خراب کر دیتا ہے۔ JavaScript نمبر ایک 64-bit فلوٹ ہے، اس لیے یہ صرف 9,007,199,254,740,991 تک کے پورے نمبرز بالکل درست رکھ سکتا ہے۔ اس سے بڑا کچھ بھی — Twitter/X پوسٹ ID، Discord snowflake، بینک اکاؤنٹ نمبر، 64-bit ڈیٹا بیس کی — `JSON.parse` سے گزرتے ہی اپنے آخری ہندسے کھو دیتا ہے۔ نمبر پھر بھی قابلِ یقین لگتا ہے، اور یہی اسے خطرناک بناتا ہے: 7205759403792793600 خاموشی سے 7205759403792793000 بن جاتا ہے۔ یہ صفحہ آپ کے پیسٹ کیے گئے ہندسے بالکل ویسے ہی رکھتا ہے، اور بتاتا ہے کہ اسے کتنے نمبرز بچانے پڑے۔
خراب فائل کے ساتھ یہ کیا کرتا ہے؟
یہ بتاتا ہے کہ مسئلہ کہاں ہے، صرف یہ نہیں کہ مسئلہ ہے۔ آپ کو لائن نمبر، کالم، خود وہ لائن جس میں غلط حرف کے نیچے نشان (^) ہوتا ہے، اور سادہ الفاظ میں وضاحت ملتی ہے — “} سے پہلے ٹریلنگ کوما”، نہ کہ “Unexpected token”۔ ٹریلنگ کوما، سنگل کوٹس، بغیر کوٹس والی کیز اور اسٹرنگز کے اندر بغیر escape کی نئی لائنیں — یہ چار زیادہ تر خراب JSON کی وجہ ہیں، اور ہر ایک کا نام الگ سے بتایا جاتا ہے۔
کیا یہ JSON Lines / NDJSON سنبھالتا ہے؟
ہاں، اور اس کی شکل برقرار رکھتا ہے۔ JSON Lines میں ہر لائن پر ایک مکمل JSON ویلیو ہوتی ہے — لاگز اور ڈیٹا ایکسپورٹس یہی فارمیٹ استعمال کرتے ہیں — اور اسے کئی لائنوں میں پھیلا کر فارمیٹ کرنا وہی چیز ختم کر دے گا جو اسے مفید بناتی ہے۔ یہ خودکار طور پر پہچانا جاتا ہے، ہر لائن الگ سے فارمیٹ ہوتی ہے، اور ہر لائن پر ایک ویلیو والی ترتیب برقرار رہتی ہے۔
کیا یہ کمنٹس یا ٹریلنگ کوما والا JSON ٹھیک کر سکتا ہے؟
یہ ان کی بالکل درست نشاندہی کرے گا، لیکن انہیں خاموشی سے قبول نہیں کرے گا۔ کمنٹس اور ٹریلنگ کوما JSON نہیں — یہ JSON5 یا JSONC ہیں، جو tsconfig.json جیسی کنفیگ فائلیں اصل میں استعمال کرتی ہیں۔ جو فارمیٹر انہیں خاموشی سے قبول کر لے وہ آپ کو ایسی فائل دے گا جسے پھر آپ کا پارسر رد کر دے، جو یہاں ایرر ملنے سے بدتر ہے۔
کیا سائز کی کوئی حد ہے؟
دستیاب میموری، ہماری لگائی ہوئی کوئی حد نہیں۔ چند میگابائٹ کی دستاویزات فوراً فارمیٹ ہو جاتی ہیں؛ بہت بڑی دستاویزات کی حد یہ ہے کہ ایک وقت میں کتنا رکھا جا سکتا ہے، ہماری طرف کی کوئی چیز نہیں۔
کیا منیفائی کرنے سے میرا ڈیٹا بدلتا ہے؟
نہیں۔ منیفائی کرنے سے صرف ٹوکنز کے درمیان کی خالی جگہ ہٹتی ہے — یہ کبھی کیز کی ترتیب نہیں بدلتا، کبھی نمبرز کی فارمیٹنگ نہیں بدلتا، کبھی کچھ نہیں ہٹاتا۔ نتیجہ پارس ہو کر بالکل وہی ویلیو دیتا ہے، بس چھوٹا ہوتا ہے۔
جاننا مفید ہے: فارمیٹنگ بالکل درست ہوتی ہے — دستاویز پارس ہو کر دوبارہ پرنٹ ہوتی ہے، اس لیے جو کچھ پارس ہو جائے وہ واپس نکل آتا ہے۔ صرف سخت JSON: کمنٹس، ٹریلنگ کوما اور بغیر کوٹس والی کیز خاموشی سے ٹھیک کرنے کے بجائے رد کر دی جاتی ہیں، کیونکہ انہیں ٹھیک کرنے کا مطلب اندازہ لگانا ہو گا۔ بہت بڑی دستاویزات فارمیٹنگ کے دوران میموری میں دو بار رکھی جاتی ہیں۔
یہ ٹول اپنی ویب سائٹ پر لگائیں
کسی بھی بلاگ، کلاس پیج یا ہیلپ آرٹیکل کے لیے مفت۔ ایک اسنیپٹ پیسٹ کریں اور آپ کے وزیٹرز اسے سیدھا آپ کے صفحے پر استعمال کر سکیں گے۔