Tech Help

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 තන්තු සහ වස්තු සාමාජික නම් ද්විත්ව උද්ධරණ භාවිතා කරයි. const user = { name: ‘Alex’ } වැනි JavaScript වස්තු ලිටරල් නීත්‍යානුකූල 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 JSON.parse සමඟ වලංගු කරයි—eval නොවේ.

වලංගු කරන්න, 2 ඉඩ, 4 ඉඩ හෝ ටැබ් සමඟ ප්‍රිටි-ප්‍රින්ට්, minify, පිටපත්, බාගත කිරීම සහ .json උඩුගත කිරීම. JSON Diff කැදලි වස්තු සහ අරේ, මාර්ග, සාරාංශය, පෙරහන් සහ හුවමාරුව ආවරණය කරයි. විග්‍රහයෙන් පසු එම දත්තවල ප්‍රිටි සහ minify පිටපත් සමානව සසඳයි; වස්තු යතුරු නමින් සසඳයි.

5 MB ට වඩා විශාල පෙළ මන්දගාමී විය හැක. 15 MB ට වඩා විශාල පෙළ බ්‍රවුසරයේ සැකසෙන්නේ නැත.

JSON වලංගුකරණය සහ ආකෘතිකරණය ඔබේ බ්‍රවුසරයේ සිදු වේ. මෙම මෙවලම JSON NEXNARA සේවාදායකයකට නොයවයි. දැන්වීම් සහ අනෙකුත් අඩවි විශේෂාංග තවමත් ජාලය භාවිතා කරයි.

අසාර්ථක තන්තුව JSON සකසන්න / Diffට අලවා උද්ධරණ නැවත ලිවීමට පෙර පළමු අකුරු කියවන්න.

FAQ

JSON.parse ඇයි Unexpected token කියන්නේ?

විග්‍රහකය නැවතුණු ලක්ෂ්‍යයේ පෙළ වලංගු JSON නොවේ. සාමාන්‍ය හේතු උද්ධරණ, කොමා, අමතර පෙළ, හෝ HTML වැනි JSON නොවන ශරීරයයි.

JSON හි Unexpected token < යනු කුමක්ද?

පළමු නීති විරෝධී අකුර < විය හැක. එය බොහෝ විට HTML පිටුවක් දෙසට යොමු කරයි, නමුත් සෑම අවස්ථාවකම 404 හෝ HTML සාක්ෂියක් නොවේ. තත්ත්වය, Content-Type සහ අමු ශරීරය පරීක්ෂා කරන්න.

JSON හි දෝෂ ස්ථානය සොයා ගන්නේ කෙසේද?

එන්ජිම ස්ථානය, පේළිය හෝ තීරුව වාර්තා කළහොත් අසල බලන්න. සැබෑ වැරැද්ද කලින් විය හැක. ඉඟියක් ලෙස භාවිතා කර පසුව වලංගු කරන්න.

JSON තනි උද්ධරණ භාවිතා කළ හැකිද?

නැත. සම්මත JSON තන්තු සහ සාමාජික නම් ද්විත්ව උද්ධරණ භාවිතා කරයි.

JSON හි අවසන් කොමාවක් තිබිය හැකිද?

නැත. සම්මත JSON අවසන් ගුණය හෝ අරේ අයිතමයට පසු කොමාවකට ඉඩ නොදේ.

තන්තුව වලංගු JSON දැයි පරීක්ෂා කරන්නේ කෙසේද?

try/catch හි JSON.parse ඇමතන්න, හෝ පෙළ JSON සකසන්න / Diffට අලවන්න. විග්‍රහය SyntaxError විසි කළහොත් තන්තුව වලංගු JSON නොවේ.

Tech Help

සාමාන්‍ය JSON දෝෂ: අවසන් කොමාව, උද්ධරණ සහ Unexpected token

අවලංගු JSON නිවැරදි කරන්න: අවසන් කොමාව, තනි උද්ධරණ, උද්ධරණ නැති යතුරු සහ Unexpected token. JSON.parse අසාර්ථක වන්නේ ඇයි සහ JSON පරීක්ෂා කරන්නේ කෙසේද.

Tech Help

තිර රූප සඳහා JPG vs PNG: කුමක් කුඩාද?

අන්තර්ගතය අනුව තිර රූප සඳහා JPG හෝ PNG තෝරන්න: UI සහ පෙළ බොහෝ විට PNG තුළ තියුණුව රැඳේ; ඡායාරූප-බර රාමු JPEG තුළ කුඩා විය හැකිය.

Tech Help

රූපය නොපැහැදිලි නොකර ගොනු ප්‍රමාණය අඩු කරන ආකාරය

පිළිගත හැකි පෙනුම තබාගෙන ඡායාරූප සහ රූප ගොනු ප්‍රමාණය අඩු කරන්න. පළමුව විශාල මාන වෙනස් කරන්න, ඉන්පසු මධ්‍යස්ථව සම්පීඩනය කරන්න, ඉන්පසු ගැළපෙන ආකෘතිය තෝරන්න.

Tech Help

Unix Timestamp සිට දිනය: තත්පර, මිලිතත්පර සහ UTC පැහැදිලි කිරීම

Unix timestamp දිනයකට පරිවර්තනය කරන්න. තත්පර vs මිලිතත්පර, UTC vs ස්ථානීය වේලාව, ISO 8601, සහ දිනය epoch වේලාවට ආපසු හරවන ආකාරය.

Tech Help

Base64 ගොනු විශාල කරන්නේ ඇයි?

Base64 සාමාන්‍යයෙන් ද්විමය දත්ත ආසන්න වශයෙන් තුනෙන් එකකින් විශාල කරයි. බයිට් 3 සිට අනුලකුණු 4 දක්වා ව්‍යුහය, පෑඩිං, Data URL අමතර බර, එම ප්‍රමාණය කවදා වටිනවාදැයි බලන්න.