تکنیکی مدد

JSON.parse "Unexpected token" کیوں کہتا ہے؟

جب متن درست JSON نہ ہو تو JSON.parse Unexpected token پھینکتا ہے۔ واحد اقتباس، آخری کوما، HTML جوابات، اور غلطی کی پوزیشن ڈیبگ کریں۔

فوری جواب

جب ان پٹ درست JSON نہ ہو تو JSON.parse() SyntaxError پھینکتا ہے۔ «Unexpected token» عموماً یہ مطلب ہے کہ تجزیہ کار ساخت کے اس نقطے پر ایک غیر مجاز حرف تک پہنچ گیا۔

عام اسباب میں واحد اقتباس، آخری کوما، بغیر اقتباس کی پراپرٹی نام، غلط سٹرنگ ایسکیپ، JSON کے گرد اضافی متن، یا HTML یا کوئی غیر JSON باڈی کو JSON سمجھ کر پارس کرنا شامل ہیں۔

غلطی کی عین عبارت JavaScript انجن اور براؤزر کے لحاظ سے بدلتی ہے۔ یہ فرض نہ کریں کہ ہر رن ٹائم «Unexpected token X in JSON at position N» چھاپتا ہے۔

یہ JSON.parse میں Unexpected token کی تشخیص ہے: غلطی کا مطلب، پوزیشن کیسے پڑھیں، اور جب باڈی HTML ہو تو کیا کریں۔ آخری کوما، اقتباس، اور Unexpected end کی وسیع تر کوریج عام JSON غلطیاں: ٹریلنگ کاما، اقتباس، اور Unexpected token میں ہے۔

JSON.parse() میں “Unexpected token” کا کیا مطلب ہے؟

JSON.parse() کو JSON گرامر درکار ہے۔ موجودہ پوزیشن پر ناجائز حرف SyntaxError پھینکتا ہے۔ {“name”:“Alex”,} غلط ہے: اس کوما کے بعد آبجیکٹ ختم نہیں ہو سکتا۔ پیغام کی عبارت اور پوزیشن اب بھی رن ٹائم کے لحاظ سے بدلتی ہیں۔

JSON.parse() کون سی غلطی پھینکتا ہے؟

غلط JSON عموماً SyntaxError پھینکتا ہے۔ قسم کی تصدیق کے لیے error.name لاگ کریں۔ پورا error.message سخت کوڈ نہ کریں: انجن اور ورژن اسے مختلف لکھتے ہیں۔

try {
  JSON.parse('{"name":"Alex",}');
} catch (error) {
  console.log(error.name);
  // SyntaxError
}

1. دوہرے اقتباس کی بجائے واحد اقتباس

{‘name’:‘Alex’} غلط JSON ہے۔ {“name”:“Alex”} درست ہے۔ JSON سٹرنگز اور آبجیکٹ ممبر نام دوہرے اقتباس استعمال کرتے ہیں۔ JavaScript آبجیکٹ لٹرل جیسے const user = { name: ‘Alex’ } قانونی JavaScript ہو سکتا ہے اور پھر بھی JSON متن نہیں۔

غلط

{'name':'Alex'}

درست

{"name":"Alex"}

2. آخری کوما

آخری پراپرٹی یا آخری ارے آئٹم کے بعد کوما معیاری درست JSON نہیں۔ {“name”:“Alex”,“age”:30,} اور [1, 2, 3,] دونوں ناکام ہوتے ہیں۔ اسے Unexpected token کی ایک وجہ سمجھیں؛ عام JSON غلطیاں: ٹریلنگ کاما، اقتباس، اور Unexpected token آخری کوما کو زیادہ گہرائی سے ڈھانپتا ہے۔

غلط

{
  "name": "Alex",
  "age": 30,
}

درست

{
  "name": "Alex",
  "age": 30
}
[1, 2, 3,]

3. بغیر اقتباس کے پراپرٹی نام

{ name: “Alex” } JavaScript آبجیکٹ لٹرل ہو سکتا ہے۔ JSON میں ممبر نام سٹرنگ ہیں اور انہیں دوہرے اقتباس چاہیے: {“name”:“Alex”}۔

غلط

{
  name: "Alex"
}

درست

{
  "name": "Alex"
}

4. غلط سٹرنگ ایسکیپ

JSON متن میں بیک سلیش ایسکیپ شروع کرتا ہے۔ خام پاتھ جیسے C:\Users\Alex غلط ہے کیونکہ \U قانونی ایسکیپ نہیں۔ بیک سلیش دوگنا کریں۔ میزبان زبان کے سٹرنگ ایسکیپ کو JSON ایسکیپ سے نہ ملائيں۔ عام JSON غلطیاں: ٹریلنگ کاما، اقتباس، اور Unexpected token اسے زیادہ گہرائی سے ڈھانپتا ہے۔

غلط

{"file":"C:\Users\Alex"}

درست

{"file":"C:\\Users\\Alex"}

5. JSON سے پہلے یا بعد اضافی متن

JSON.parse ایک JSON ویلیو چاہتا ہے۔ {“ok”:true} سے پہلے Success: جیسا سابقہ، یا اس کے بعد done جیسا لاحقہ، پوری سٹرنگ غلط کر دیتا ہے۔ ایک JSON ویلیو کے گرد غیر اہم خالی جگہ جائز ہے۔ JSON ویلیو سے پہلے یا بعد اسپیس رکھنے سے منع نہیں۔

Success:
{"ok":true}
{"ok":true}
done

6. JSON کی بجائے HTML پارس کرنا

HTML صفحے پر response.json() بلانا Unexpected token کا عام کیس ہے۔ غلط endpoint، 404 یا 500 کے HTML صفحات، لاگ اِن ری ڈائریکٹ، پراکسی باڈیز، اور فال بیک صفحات اکثر مارک اپ سے شروع ہوتے ہیں۔ «Unexpected token < ہمیشہ HTML ہے» بہت سخت ہے: < اشارہ ہے، ثبوت نہیں۔

fetch('/api/data')
  .then(response => response.json())

“Unexpected token <” عموماً کیا مطلب رکھتا ہے؟

JSON ویلیوز عموماً < سے شروع نہیں ہوتیں۔ اگر باڈی یا سے شروع ہو تو < پہلا ناجائز حرف ہو سکتا ہے۔ مقامی ڈیبگ کے دوران HTTP سٹیٹس، Content-Type، اور خام باڈی چیک کریں۔ انجن کی عبارت اب بھی بدلتی ہے۔

پارس کرنے سے پہلے جواب چیک کریں

fetch باڈی صرف ایک بار استعمال ہو سکتی ہے۔ مقامی ڈیبگ میں پہلے text() پڑھیں، مختصر سابقہ دیکھیں، پھر وہی سٹرنگ JSON.parse کریں۔ ایک ہی رسپانس پر response.json() پھر response.text() نہ بلائیں۔ حساس پروڈکشن پے لوڈ بطورِ ڈیفالٹ لاگ نہ کریں۔

const response = await fetch(url);
const text = await response.text();

console.log(response.status);
console.log(response.headers.get("content-type"));
console.log(text.slice(0, 200));

try {
  const data = JSON.parse(text);
  console.log(data);
} catch (error) {
  console.error("Invalid JSON:", error);
}

“at position 123” کا کیا مطلب ہے؟

کچھ انجن پوزیشن، لائن، یا کالم بتاتے ہیں۔ قریب برا اقتباس، کوما، بریس، یا ایسکیپ تلاش کریں۔ وہ انڈیکس وہاں ہے جہاں پارس نے مسئلہ دیکھا؛ اصل وجہ پہلے ہو سکتی ہے۔ یہ عین خراب حرف ہونے کی ضمانت نہیں۔

Unexpected token بمقابلہ Unexpected end

Unexpected token کا مطلب ہے تجزیہ کار کو ایسا حرف ملا جس کی توقع نہ تھی۔ Unexpected end تب آ سکتا ہے جب ان پٹ ویلیو مکمل ہونے سے پہلے رک جائے، جیسے {“name”:“Alex” بغیر بند بریس۔ عین عبارت انجن پر منحصر ہے۔ عام JSON غلطیاں: ٹریلنگ کاما، اقتباس، اور Unexpected token نامکمل JSON کو وسیع تر ڈھانپتا ہے۔

{"name":"Alex"

JSON JavaScript آبجیکٹ لٹرل جیسا نہیں

JSON ڈیٹا فارمیٹ ہے۔ JavaScript آبجیکٹ لٹرل JavaScript نحو ہے۔ بغیر اقتباس کیز، واحد اقتباس، اور آخری کوما والا JS آبجیکٹ درست JSON متن نہیں۔ JSON.parse JavaScript آبجیکٹ لٹرلز کو محفوظ طریقے سے پارس نہیں کر سکتا۔

const data = {
  name: 'Alex',
  active: true,
};
{
  "name": "Alex",
  "active": true
}

کیا JSON میں تبصرے ہو سکتے ہیں؟

معیاری JSON تبصرے سپورٹ نہیں کرتا۔ آبجیکٹ کے اندر // لائن غلط ہے۔ JSON5 اور ملتی جلتی توسیعیں مختلف فارمیٹس ہیں۔ JSON فارمیٹ / Diff معیاری JSON JSON.parse سے جانچتا ہے اور JSON5 کو JSON نہیں سمجھتا۔

{
  // user name
  "name": "Alex"
}

کیا undefined، NaN، اور Infinity درست JSON ہیں؟

نہیں۔ JSON ویلیوز آبجیکٹ، ارے، سٹرنگ، نمبر، true، false، اور null ہیں۔ undefined، NaN، اور Infinity نہیں۔ اوپری سطح کی ویلیو آبجیکٹ یا ارے ہونا ضروری نہیں: true، 123، “hello”، اور null درست JSON ہیں۔

{"a":undefined}
{"a":NaN}
{"a":Infinity}
true
123
"hello"
null

Unexpected token غلطی قدم بہ قدم کیسے ٹھیک کریں

ماخذ پر کام کریں، غلطی کی سٹرنگ پر نہیں:

  1. تصدیق کریں کہ ان پٹ واقعی JSON ہے، HTML، لاگز، یا JavaScript نہیں۔
  2. خام ان پٹ کے پہلے حروف دیکھیں۔
  3. اگر API سے آیا ہو تو HTTP سٹیٹس اور Content-Type چیک کریں۔ نہ 200 نہ application/json درست JSON کی ضمانت دیتے۔
  4. نحو JSON پارسر میں جانچیں۔
  5. بتائی گئی پوزیشن، لائن، یا کالم کو اشارہ سمجھیں، یقینی جڑ وجہ نہیں۔
  6. اس علاقے کے قریب اقتباس، کوما، بریسز، بریکٹس، اور ایسکیپس چیک کریں۔
  7. فارمیٹ شدہ، تصدیق شدہ کاپی سے موازنہ کریں۔
  8. سلسلہ ساز یا endpoint ٹھیک کریں۔ بتائے گئے ٹوکن کو تصادفی نہ مٹائیں۔
اقتباس تصادفی بدل کر JSON «درست» نہ کریں

' کو " سے عالمی بدل سٹرنگ کے اندر اپاسٹروف، پہلے سے ایسکیپ شدہ متن، اور غیر JSON ماخذ توڑ سکتا ہے۔ اصل سلسلہ ساز سے درست JSON بنائیں۔ eval کو JSON پارسر نہ سمجھیں۔

JavaScript میں JSON بناتے وقت JSON.stringify() استعمال کریں

ہاتھ سے سٹرنگ جوڑنے کے بجائے JSON.stringify ترجیح دیں۔ جو ویلیوز سلسلہ کرتا ہے ان کے لیے درست JSON متن دیتا ہے۔ ہر JavaScript ویلیو محفوظ نہیں رہتی: undefined، فنکشنز، اور علامات کا خاص رویہ ہے۔ وہ تفصیل یہاں دائرے سے باہر ہے۔

const data = {
  name: "Alex",
  active: true
};
const json = JSON.stringify(data);
// {"name":"Alex","active":true}

غلط JSON بمقابلہ حقیقی اصلاح

یہ جوڑے JSON.parse سے چیک کیے گئے۔ HTML کے لیے اصلاح رسپانس ہے، نحو کی ترمیم نہیں۔

مسئلہ غلط اصلاح
واحد اقتباس {'a':1} {"a":1}
آخری کوما {"a":1,} {"a":1}
بغیر اقتباس کی کلید {a:1} {"a":1}
undefined {"a":undefined} {"a":null}
HTML باڈی <html>... endpoint اور خام رسپانس چیک کریں۔ HTML کو ایڈٹ کر کے JSON نہ بنائیں۔

Unexpected token کا سادہ فیصلہ گائیڈ

اگر JSON.parse ناکام ہو تو اقتباس دوبارہ لکھنے سے پہلے فیصلہ کریں کہ آپ کے پاس JSON ہے بھی یا نہیں۔

  • JSON.parse ناکام ہوا
  • API سے؟ سٹیٹس، Content-Type، اور خام باڈی چیک کریں
  • کیا JSON سے شروع ہوتا ہے؟ ورنہ ماخذ یا endpoint ٹھیک کریں
  • اگر ہاں، اقتباس، کوما، بریسز، بریکٹس، ایسکیپس، غیر معاون ویلیوز جانچیں
  • بتائی گئی پوزیشن کو اشارہ بنائیں
  • ماخذ ٹھیک کریں، پھر دوبارہ پارس کریں
Unexpected token حیرت کا نام بتاتا ہے۔ متن کا ماخذ اکثر حقیقی اصلاح ہے۔

پارس یا استعمال سے پہلے JSON جانچیں

NEXNARA JSON فارمیٹ / Diff براؤزر میں JSON.parse سے JSON جانچتا ہے—eval سے نہیں۔

جانچیں، 2 اسپیس، 4 اسپیس، یا ٹیب سے خوبصورت پرنٹ، منیفائی، کاپی، ڈاؤن لوڈ، اور .json اپ لوڈ۔ JSON Diff نیسٹڈ آبجیکٹ اور ارے، پاتھ، خلاصہ، فلٹر، اور سوئپ ڈھانپتا ہے۔ پارس کے بعد وہی ڈیٹا کی خوبصورت اور منیفائی کاپیاں برابر موازنہ ہوتی ہیں؛ آبجیکٹ کیز نام سے موازنہ ہوتی ہیں۔

5 MB سے بڑا متن سست لگ سکتا ہے۔ 15 MB سے بڑا متن براؤزر میں پروسیس نہیں ہوتا۔

JSON کی جانچ اور فارمیٹنگ آپ کے براؤزر میں ہوتی ہے۔ یہ ٹول JSON NEXNARA سرور کو نہیں بھیجتا۔ اشتہارات اور سائٹ کی دیگر خصوصیات اب بھی نیٹ ورک استعمال کرتی ہیں۔

ناکام سٹرنگ JSON فارمیٹ / Diff میں چسپاں کریں اور اقتباس دوبارہ لکھنے سے پہلے پہلے حروف پڑھیں۔

FAQ

JSON.parse Unexpected token کیوں کہتا ہے؟

جس نقطے پر تجزیہ کار رکا وہاں متن درست JSON نہیں۔ عام اسباب اقتباس، کوما، اضافی متن، یا غیر JSON باڈی جیسے HTML ہیں۔

Unexpected token < in JSON کا کیا مطلب ہے؟

پہلا ناجائز حرف < ہو سکتا ہے۔ یہ اکثر HTML صفحے کی طرف اشارہ کرتا ہے، مگر ہر معاملے میں 404 یا HTML کا ثبوت نہیں۔ سٹیٹس، Content-Type، اور خام باڈی چیک کریں۔

JSON میں غلطی کی پوزیشن کیسے تلاش کروں؟

اگر انجن پوزیشن، لائن، یا کالم بتائے تو قریب دیکھیں۔ اصل غلطی پہلے ہو سکتی ہے۔ اسے اشارہ بنائیں، پھر جانچیں۔

کیا JSON واحد اقتباس استعمال کر سکتا ہے؟

نہیں۔ معیاری JSON سٹرنگز اور ممبر نام دوہرے اقتباس استعمال کرتے ہیں۔

کیا JSON میں آخری کوما ہو سکتی ہے؟

نہیں۔ معیاری JSON آخری پراپرٹی یا ارے آئٹم کے بعد کوما کی اجازت نہیں دیتا۔

سٹرنگ درست JSON ہے کیسے چیک کروں؟

try/catch میں JSON.parse بلائیں، یا متن JSON فارمیٹ / Diff میں چسپاں کریں۔ اگر پارس SyntaxError پھینکے تو سٹرنگ درست JSON نہیں۔

تکنیکی مدد

عام JSON غلطیاں: ٹریلنگ کاما، اقتباس، اور Unexpected token

غلط JSON ٹھیک کریں: ٹریلنگ کاما، سنگل اقتباس، بغیر اقتباس کیز، اور Unexpected token۔ دیکھیں JSON.parse کیوں ناکام ہوتا ہے اور JSON کیسے جانچیں۔

تکنیکی مدد

اسکرین شاٹ کے لیے JPG بمقابلہ PNG: کون سی چھوٹی ہے؟

مواد کے حساب سے اسکرین شاٹ کے لیے JPG یا PNG چنیں: UI اور متن اکثر PNG میں تیز رہتے ہیں؛ فوٹو بھری فریم JPEG میں چھوٹی ہو سکتی ہیں۔

تکنیکی مدد

تصویر کی فائل سائز کیسے گھٹائیں بغیر دھندلا کیے

فوٹو اور تصویر کی فائل سائز گھٹائیں اور قابلِ قبول بصری معیار رکھیں۔ پہلے ضرورت سے زیادہ ابعاد بدلیں، پھر معتدل کمپریس کریں، پھر موزوں فارمیٹ چنیں.

تکنیکی مدد

Unix Timestamp سے تاریخ: سیکنڈ، ملی سیکنڈ اور UTC کی وضاحت

Unix timestamp کو تاریخ میں بدلیں۔ سیکنڈ بمقابلہ ملی سیکنڈ، UTC بمقابلہ مقامی وقت، ISO 8601، اور تاریخ سے واپس epoch وقت تک کا طریقہ دیکھیں۔

تکنیکی مدد

Base64 فائلیں بڑی کیوں کرتا ہے؟

Base64 عام طور پر بائنری ڈیٹا کو تقریباً ایک تہائی بڑا کرتا ہے۔ 3 بائٹس سے 4 حروف کا ڈھانچہ، پیڈنگ، Data URL کا اضافہ، اور کب وہ سائز سودمند ہے دیکھیں۔