JSON فارمیٹر اور ویلیڈیٹر
JSON پیسٹ کریں اور اسے پریٹی پرنٹ کریں، منیفائی کریں یا اس کی کیز ترتیب دیں۔ اگر JSON پارس نہ ہو تو فارمیٹر وہ لائن اور کالم دکھاتا ہے جہاں پارسر رک گیا، اور مسئلے کے نیچے نشان بھی لگاتا ہے، اس لیے 3,000 لائنوں کے رسپانس میں چھوٹا ہوا کوما چند سیکنڈ میں مل جاتا ہے۔
0 حروف · 0 الفاظ · 0 سطریں
0 حروف · 0 الفاظ · 0 سطریں
یہ مکمل طور پر اسی براؤزر ٹیب میں چلتا ہے۔ آپ کا متن کبھی اپ لوڈ یا محفوظ نہیں کیا جاتا۔
JSON ویلیو کی اقسام
RFC 8259 صرف یہی ویلیوز اجازت دیتا ہے۔ آبجیکٹ اور ارے ایک دوسرے میں آ سکتے ہیں؛ باقی سب آخری ویلیو ہیں۔
| قسم | مثال | قاعدہ |
|---|---|---|
| آبجیکٹ | {"id": 7, "tags": ["a"]} | کیز ڈبل کوٹ والی اسٹرنگ ہوں؛ ارکان کاما سے الگ ہوں اور آخر میں اضافی کاما نہ ہو۔ |
| ارے | [1, "two", null] | کسی بھی ویلیو کی ترتیب وار فہرست، مخلوط اقسام کی اجازت ہے۔ |
| اسٹرنگ | "caf\u00e9 \"quoted\"" | صرف ڈبل کوٹ؛ کنٹرول حروف ایسکیپ ہونے چاہییں؛ \u ایسکیپ میں چار ہیکس ہندسے ہوتے ہیں۔ |
| نمبر | -12.5e3 | صرف اعشاری: اختیاری مائنس، شروع میں صفر نہیں، اختیاری کسر اور ایکسپونینٹ۔ NaN یا Infinity نہیں۔ |
| true، false، null | true | چھوٹے حروف، بغیر کوٹ۔ |
پارسر کیا مسترد کرتا ہے
نیچے ہر ان پٹ اسی JSON.parse سے گزارا گیا جو فارمیٹر استعمال کرتا ہے، جب یہ صفحہ بنایا گیا۔
| ان پٹ | مسئلہ | JSON.parse |
|---|---|---|
{"a": 1,} | آخر میں اضافی کاما | مسترد |
{'a': 1} | سنگل کوٹ والی اسٹرنگ | مسترد |
{"a": 1 /* note */} | تبصرے | مسترد |
{a: 1} | بغیر کوٹ کی کلید | مسترد |
{"n": NaN} | NaN JSON نمبر نہیں ہے | مسترد |
{"n": 012} | شروع میں صفر | مسترد |
{"n": 0x1F} | ہیکسا ڈیسیمل نمبر | مسترد |
JSON اسٹرنگ میں ایسکیپ
| حرف | JSON میں تحریر |
|---|---|
| ڈبل کوٹ | "\"" |
| بیک سلیش | "\\" |
| لائن فیڈ | "\n" |
| ٹیب | "\t" |
| کیریج ریٹرن | "\r" |
| کنٹرول حرف U+0001 | "\u0001" |
| فارورڈ سلیش (ایسکیپ اختیاری) | "/" |
| غیر ASCII حرف (ایسکیپ ضروری نہیں) | "é" |
درست JSON دستاویز کن اصولوں کی پابندی کرتی ہے
JSON کی تعریف RFC 8259 میں کی گئی ہے (جو اپنی اصل میں ECMA-404 جیسی ہے)۔ ایک دستاویز صرف ایک ویلیو ہوتی ہے: آبجیکٹ، ارے، اسٹرنگ، نمبر، true، false یا null۔ آبجیکٹ کی کیز ہمیشہ ڈبل کوٹس میں اسٹرنگ ہوتی ہیں۔ اسٹرنگ میں صرف ڈبل کوٹس چلتے ہیں اور کوٹ، بیک سلیش اور U+0020 سے نیچے کے ہر کنٹرول کریکٹر کو ایسکیپ کرنا لازمی ہے؛ اس لیے اسٹرنگ کے اندر ٹیب اور نئی لائن \t اور \n کی صورت میں لکھی جاتی ہیں۔ RFC 8259 یہ بھی لازمی قرار دیتا ہے کہ سسٹمز کے درمیان بھیجا جانے والا JSON UTF-8 میں ہو۔
نمبر اعشاری ہوتے ہیں: شروع میں صفر نہیں، ہیکسا ڈیسیمل نہیں، NaN یا Infinity نہیں، اور آگے پلس کا نشان نہیں۔ اس فارمیٹ میں کمنٹس نہیں ہوتے اور آخر میں اضافی کوما بھی نہیں چلتا۔ حقیقی دنیا کی زیادہ تر غلطیاں انہی دو اصولوں سے ہوتی ہیں، کیونکہ JavaScript آبجیکٹ لٹرلز، JSON5 اور کئی کنفیگ فائلیں دونوں کی اجازت دیتی ہیں۔ نیچے دیا گیا حوالہ جاتی جدول ہر عام غلطی کو اسی پارسر میں چلا کر بنایا گیا ہے جو فارمیٹر استعمال کرتا ہے۔
پریٹی پرنٹ، منیفائی اور ترتیب
پریٹی پرنٹنگ میں لائن بریک اور انڈینٹیشن شامل ہوتی ہے تاکہ ساخت پڑھنے میں آسان ہو؛ JavaScript پروجیکٹس میں دو اسپیس سب سے عام ہیں، Python کے json.dumps(indent=4) کے ساتھ چار اسپیس عام انتخاب ہیں، اور ٹیب ہر قاری کو اپنی چوڑائی چننے دیتے ہیں۔ منیفائی ہر غیر ضروری اسپیس ہٹا دیتا ہے، جس سے API پے لوڈ چھوٹے ہوتے ہیں اور دستاویز لاگز یا انوائرنمنٹ ویری ایبلز کے لیے ایک لائن میں آ جاتی ہے۔
کیز ترتیب دیں ہر آبجیکٹ کے اراکین کو حروفِ تہجی کی ترتیب میں رکھتا ہے، اندر تک ہر سطح پر۔ تعریف کے مطابق JSON آبجیکٹ غیر ترتیب شدہ ہوتے ہیں، اس لیے ترتیب سے مفہوم نہیں بدلتا، مگر مختلف سسٹمز کی دو دستاویزات کا موازنہ بہت آسان ہو جاتا ہے۔ یاد رکھیں کہ پارسنگ نمبروں کو JavaScript ڈبلز میں بدل دیتی ہے: 2^53 (9,007,199,254,740,992) سے بڑے عدد، جیسے بعض ڈیٹا بیس IDs، دوبارہ فارمیٹ کرنے پر درستگی کھو دیتے ہیں، اس لیے انہیں اسٹرنگ کے طور پر رکھیں۔
JSON سے دوسرے فارمیٹس میں
فارمیٹ شدہ دستاویز پڑھنا آسان ہوتا ہے، لیکن کبھی اسے دوسری شکل میں چاہیے ہوتا ہے۔ آبجیکٹس کی ارے JSON سے CSV کے ذریعے اسپریڈشیٹ بن جاتی ہے، اور ڈیٹا کنورٹر پوری فائلوں کو JSON، XML، YAML اور CSV کے درمیان منتقل کرتا ہے۔
اکثر پوچھے جانے والے سوالات
- فارمیٹر تبصروں والا JSON کیوں رد کر دیتا ہے؟
- معیاری JSON میں کمنٹ کا کوئی طریقہ نہیں؛ RFC 8259 نے اسے جان بوجھ کر چھوڑا ہے۔ کمنٹس ہٹا دیں، یا اگر فائل پڑھنے والا ٹول JSONC یا JSON5 کو سپورٹ کرتا ہو تو فائل کو انہی فارمیٹس میں رکھیں۔
- JSON کی غلطی میں "Unexpected token" کا کیا مطلب ہے؟
- پارسر کو ایسا کریکٹر ملا جو اس جگہ نہیں آ سکتا، جیسے سنگل کوٹ، } سے پہلے اضافی کوما، یا بغیر کوٹس کی کی۔ دکھائی گئی لائن اور کالم اسی کریکٹر کی نشاندہی کرتے ہیں۔
- کیا کیز ترتیب دینے سے میرا ڈیٹا بدل جاتا ہے؟
- نہیں۔ JSON میں آبجیکٹ کے اراکین کی ترتیب کا کوئی مطلب نہیں ہوتا، اس لیے ترتیب دی گئی دستاویز برابر ہی رہتی ہے۔ ارے کی ترتیب معنی رکھتی ہے اور کبھی نہیں بدلی جاتی۔
- فارمیٹ کرنے کے بعد لمبا نمبر کیوں بدل گیا؟
- JavaScript نمبروں کو 64 بٹ فلوٹ کے طور پر رکھتا ہے، جو عدد کو صرف 2^53 تک بالکل درست ظاہر کرتا ہے۔ بڑے IDs پارس ہوتے وقت راؤنڈ ہو جاتے ہیں؛ ہر ہندسہ برقرار رکھنے کے لیے انہیں اسٹرنگ کے طور پر بھیجیں۔
- کیا پیسٹ کرنے کے بجائے JSON فائل فارمیٹ کی جا سکتی ہے؟
- فائل کو کسی بھی ٹیکسٹ ایڈیٹر میں کھولیں، سب منتخب کریں اور یہاں پیسٹ کر دیں۔ دسیوں میگابائٹ کی بہت بڑی فائلیں ٹیکسٹ ایریا میں دکھائے جانے کے دوران ٹیب کو سست کر سکتی ہیں۔