تخنیکي مرسته
ولې JSON.parse "Unexpected token" وايي؟
JSON.parse Unexpected token غورځوي کله چې متن سم JSON نه وي. یوازې اقتباس، وروستی کاما، HTML ځوابونه او د تېروتنې موقعیت سم کړئ.
JSON.parse() SyntaxError غورځوي کله چې ننوت سم JSON نه وي. “Unexpected token” ډېر ځله دا معنی لري چې تجزیه کوونکی په هغه ټکي کې غیر مجاز توري ته رسېدلی.
عام لاملونه یوازې اقتباس، وروستی کاما، بې اقتباسه د ځانګړتیا نومونه، ناسم د تار ایسکیپ، د JSON شاوخوا زیات متن، یا HTML او بل غیر JSON بدن د JSON په توګه تجزیه کول دي.
د تېروتنې دقیق عبارت د JavaScript انجن او براوزر له مخې توپیر لري. مه ګڼئ چې هر runtime «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 ارزښت ته انتظار لري. مخکې Success: لکه مخکې له {“ok”:true}، یا وروسته done، ټول تار ناسموي. د یوه JSON ارزښت شاوخوا بې ارزښته سپین ځای اجازه لري. JSON د ارزښت مخکې یا وروسته ځایونه نه منع کوي.
Success:
{"ok":true}
{"ok":true}
done
6. د JSON پر ځای HTML تجزیه کول
په HTML پاڼه باندې response.json() غږول د Unexpected token عامه قضیه ده. ناسم endpointونه، ۴۰۴ یا ۵۰۰ 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 تېروتنه څنګه ګام په ګام سم کړئ
په سرچینه کار وکړئ، نه په د تېروتنې تار:
- تایید کړئ چې ننوت رښتیا JSON دی، نه HTML، ثبتونه یا JavaScript.
- د خام ننوت لومړي توري وګورئ.
- که له API راغلی، HTTP حالت او Content-Type وګورئ. نه ۲۰۰ او نه application/json سم JSON تضمینوي.
- نحو په JSON تجزیه کوونکي کې تایید کړئ.
- هر راپور شوی موقعیت، کرښه یا ستون د اشارې په توګه وکاروئ، نه د تضمین شوې رېښه لامل په توګه.
- نږدې اقتباسونه، کاماګانې، قوسونه، مربع قوسونه او ایسکیپونه وګورئ.
- له بڼه شوې، تایید شوې کاپي سره پرتله کړئ.
- سیریلایزر یا endpoint سم کړئ. راپور شوی ټوکن په تصادفي ډول مه ړنګوئ.
د ' نړیوال بدلولو په " سره کېدای شي د تارونو دننه اپوستروفونه، مخکې ایسکیپ شوی متن او غیر 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 سم کړئ
- که هو، اقتباسونه، کاماګانې، قوسونه، مربع قوسونه، ایسکیپونه، نه ملاتړ شوي ارزښتونه تایید کړئ
- راپور شوی موقعیت د اشارې په توګه وکاروئ
- سرچینه سم کړئ، بیا بیا تجزیه کړئ
مخکې له تجزیې یا کارولو JSON تایید کړئ
NEXNARA JSON سمبالول / Diff په براوزر کې JSON د JSON.parse سره تاییدوي—نه eval.
تایید، د ۲ ځایونو، ۴ ځایونو یا ټبونو سره ښکلی، minify، کاپي، ښکته کول او .json پورته کول. JSON Diff توښه شوي شیان او اري، لارې، لنډیز، فلټرونه او بدلول پوښي. له تجزیې وروسته د همدې معلوماتو ښکلې او minify کاپي د برابر په توګه پرتله کېږي؛ د شي کیلي د نوم له مخې پرتله کېږي.
له 5 MB لوی متن کېدای شي ورو ښکاره شي. له 15 MB لوی متن په براوزر کې نه پروسس کېږي.
د JSON تایید او بڼه ستاسو په براوزر کې کېږي. دا وسیله JSON د NEXNARA سرور ته نه استوي. اعلانونه او د سایټ نورې ځانګړتیاوې لا شبکه کاروي.
ناکام تار په JSON سمبالول / Diff کې ولګوئ او مخکې له دې چې اقتباسونه بیا ولیکئ لومړي توري ولولئ.
FAQ
ولې JSON.parse Unexpected token وايي؟
متن په هغه ټکي کې سم JSON نه دی چې تجزیه کوونکی ودرېد. عام لاملونه اقتباسونه، کاماګانې، زیات متن، یا غیر JSON بدن لکه HTML دي.
Unexpected token < in JSON څه معنی لري؟
لومړی غیر قانوني توری کېدای شي < وي. دا ډېر ځله HTML پاڼې ته اشاره کوي، خو په هر حالت کې د ۴۰۴ یا HTML ثبوت نه دی. حالت، Content-Type او خام بدن وګورئ.
په JSON کې د تېروتنې موقعیت څنګه ومومم؟
که انجن موقعیت، کرښه یا ستون راپور کړي، نږدې وګورئ. اصلي تېروتنه کېدای شي مخکې وي. د اشارې په توګه یې وکاروئ، بیا تایید کړئ.
ایا JSON یوازې اقتباس کارولی شي؟
نه. په معياري JSON کې تارونه او د غړي نومونه دوه ګونی اقتباس کاروي.
ایا JSON وروستي کاماګانې درلودلی شي؟
نه. معياري JSON د وروستۍ ځانګړتیا یا د اري توکي وروسته کاما اجازه نه ورکوي.
څنګه وګورم چې تار سم JSON دی؟
په try/catch کې JSON.parse وغږوئ، یا متن په JSON سمبالول / Diff کې ولګوئ. که تجزیه SyntaxError وغورځوي، تار سم JSON نه دی.