Tech Help

JSON.parse ለምን "Unexpected token" ይላል?

ጽሑፉ ልክ የሆነ JSON ሳይሆን ሲቀር JSON.parse Unexpected token ይወረውራል። ነጠላ ጥቅስ፣ የመጨረሻ ነጠላ ሰረዝ፣ HTML ምላሾች እና የስህተት ቦታን ያስተካክሉ።

ፈጣን መልስ

ግብዓቱ ልክ የሆነ JSON ሳይሆን ሲቀር JSON.parse() SyntaxError ይወረውራል። “Unexpected token” በአጠቃላይ ተንታኙ በዚያ የመዋቅር ነጥብ የማይፈቀድ ቁምፊ እንደደረሰ ያሳያል።

የተለመዱ ምክንያቶች ነጠላ ጥቅስ፣ የመጨረሻ ነጠላ ሰረዝ፣ ጥቅስ የሌላቸው የባህሪ ስሞች፣ ልክ ያልሆነ ሕብረቁምፊ escape፣ በ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. ልክ ያልሆነ ሕብረቁምፊ escape

በJSON ጽሑፍ ውስጥ የኋላ ተዳፋት መስመር escape ይጀምራል። እንደ C:\Users\Alex ያለ ጥሬ መንገድ ልክ አይደለም ምክንያቱም \U ሕጋዊ escape አይደለም። የኋላ ተዳፋት መስመሮችን በእጥፍ ያድርጉ። የአስተናጋጅ-ቋንቋ ሕብረቁምፊ escapeን ከJSON escape ጋር አይቀላቅሉ። የተለመዱ 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ዎች፣ 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” ምን ማለት ነው?

አንዳንድ ሞተሮች ቦታ፣ መስመር ወይም ዓምድ ይዘግባሉ። በአቅራቢያ መጥፎ ጥቅስ፣ ነጠላ ሰረዝ፣ ቅንፍ ወይም escape ይፈልጉ። ያ መረጃ ጠቋሚ መተንተኑ ችግር ያስተዋለበት ነው፤ እውነተኛው ምክንያት ቀደም ብሎ ሊሆን ይችላል። ትክክለኛው ጉድለት ቁምፊ እንደሆነ አይረጋገጥም።

Unexpected token vs 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. በዚያ አካባቢ አጠገብ ጥቅሶችን፣ ነጠላ ሰረዞችን፣ ቅንፎችን፣ ካሬ ቅንፎችን እና escapeዎችን ይፈትሹ።
  7. ከተቀረጸ፣ ከተረጋገጠ ቅጂ ጋር ያነፃፅሩ።
  8. አቀናባሪውን ወይም endpointን ያስተካክሉ። የተዘገበውን ቶከን በዘፈቀደ አይሰርዙ።
ጥቅሶችን በዘፈቀደ በመተካት JSONን «አያስተካክሉ»

የ' ወደ " ዓለም አቀፍ መተካት በሕብረቁምፊዎች ውስጥ apostrophe፣ ቀድሞ escape የተደረገ ጽሑፍ እና 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 vs እውነተኛ ማስተካከያ

እነዚህ ጥንዶች በ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ን ያስተካክሉ
  • አዎ ከሆነ ጥቅሶችን፣ ነጠላ ሰረዞችን፣ ቅንፎችን፣ ካሬ ቅንፎችን፣ escapeዎችን፣ ያልተደገፉ እሴቶችን ያረጋግጡ
  • የተዘገበውን ቦታ እንደ ፍንጭ ይጠቀሙ
  • ምንጩን ያስተካክሉ፣ ከዚያ እንደገና ይተንትኑ
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 ይያዙ. WebP እንደ ቅርጸት lossy ወይም lossless ሊሆን ይችላል እና ግልጽነት ሊኖረው ይችላል። JPG እና WebP የጥራት ቅንብር ይጠቀማሉ። PNG ሁልጊዜ ከJPG ይበልጣል? ለፎቶ JPEG ወይም WebP ብዙ ጊዜ በጣም ትንሽ ፋይል ይሰጣል። ውጤቱን ያነፃፅሩ.

Tech Help

ምስል ፋይል መጠን ደብዛዛ ሳያደርጉት እንዴት መቀነስ እንደሚቻል

ተቀባይነት ያለው የእይታ ጥራት እየጠበቁ የፎቶና የምስል ፋይል መጠን ይቀንሱ። መጀመሪያ ከሚያስፈልገው የሚበልጡ ልኬቶችን ይቀይሩ፣ ከዚያ በመካከለኛ ይጨምቁ፣ ከዚያ የሚስማማ ቅርጸት ይምረጡ።

Tech Help

ከ Unix Timestamp ወደ ቀን፦ ሰከንድ፣ ሚሊሰከንድ እና UTC ተብራርተዋል

Unix timestampን ወደ ቀን ይቀይሩ። ሰከንድ ከሚሊሰከንድ፣ UTC ከአካባቢ ሰዓት፣ ISO 8601 እና ቀንን ወደ epoch ጊዜ መመለስን ይመልከቱ።

Tech Help

Base64 ፋይሎችን ለምን ይበልጥ ያሳድጋል?

Base64 ብዙ ጊዜ ሁለትዮሽ ውሂብን በሦስተኛ ድርሻ ያህል ያሳድጋል። ከ3 ባይት ወደ 4 ቁምፊ መዋቅር፣ መሙላት፣ የData URL ተጨማሪ መጠን እና ተጨማሪው መጠን መቼ እንደሚያስፈልግ ይመልከቱ።