Tech Help

កំហុស JSON ធម្មតា: សញ្ញាក្បៀសចុងក្រោយ សញ្ញាសម្រង់ និង Unexpected token

កែ JSON មិនត្រឹមត្រូវ: សញ្ញាក្បៀសចុងក្រោយ សញ្ញាសម្រង់តែមួយ សោគ្មានសញ្ញាសម្រង់ និង Unexpected token។ ហេតុអ្វី JSON.parse បរាជ័យ និងរបៀបផ្ទៀងផ្ទាត់ JSON។

ចម្លើយរហ័ស

កំហុស JSON ភាគច្រើនមកពីច្បាប់តឹងរ៉ឹង: សញ្ញាក្បៀសចុងក្រោយ សញ្ញាសម្រង់តែមួយ ឈ្មោះលក្ខណៈគ្មានសញ្ញាសម្រង់ សញ្ញាក្បៀសបាត់ វង់ក្រចកមិនគូ escape មិនត្រឹមត្រូវ ឬមតិ។

JSON មើលទៅដូចវត្ថុ JavaScript ប៉ុន្តែតឹងរ៉ឹងជាង។ ឈ្មោះលក្ខណៈ និងខ្សែអក្សរត្រូវការសញ្ញាសម្រង់ពីរ។

បើឃើញ Unexpected token តួអក្សរដែលរាយការណ៍អាចជាកន្លែងដែលការញែកឈប់—មិនចាំបាច់ជាកន្លែងដែលកំហុសដើមចាប់ផ្តើម។

JSON របស់អ្នកត្រូវបានសម្គាល់ថាមិនត្រឹមត្រូវ។ ជាធម្មតាជាបញ្ហាវេយ្យាករណ៍តូច មិនមែនទម្រង់ឯកសារខូច។ កំហុសប្រាំពីរខាងក្រោមបង្ក Unexpected token ភាគច្រើន។

ហេតុអ្វី JSON ងាយខូចម្ល៉េះ?

JSON ជាទម្រង់ទិន្នន័យមានវេយ្យាករណ៍តឹងរ៉ឹង។ លីតេរ៉ាល់វត្ថុ JavaScript អាចមើលទៅស្រដៀងគ្នា ប៉ុន្តែនៅតែ JSON មិនត្រឹមត្រូវ។ ក្នុង JSON ស្តង់ដារ ឈ្មោះលក្ខណៈ និងខ្សែអក្សរត្រូវការសញ្ញាសម្រង់ពីរ សញ្ញាក្បៀសចុងក្រោយមិនអនុញ្ញាត និងមតិមិនមែនជាផ្នែកនៃទម្រង់។

1. សញ្ញាក្បៀសចុងក្រោយ

សញ្ញាក្បៀសបន្ថែមបន្ទាប់ពីលក្ខណៈចុងក្រោយជាបញ្ហា។ JSON ស្តង់ដារមិនអនុញ្ញាត។

មិនត្រឹមត្រូវ

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

ត្រឹមត្រូវ

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

ច្បាប់ដូចគ្នាអនុវត្តចំពោះអារេ។ ដកសញ្ញាក្បៀសបន្ទាប់ពីធាតុចុងក្រោយ។

មិនត្រឹមត្រូវ

[
  "red",
  "green",
]

ត្រឹមត្រូវ

[
  "red",
  "green"
]

2. សញ្ញាសម្រង់តែមួយជំនួសពីរ

JavaScript ច្រើនតែទទួលសញ្ញាសម្រង់តែមួយ។ JSON មិនទទួល។ ឈ្មោះលក្ខណៈ និងតម្លៃខ្សែអក្សរត្រូវប្រើសញ្ញាសម្រង់ពីរ។

មិនត្រឹមត្រូវ

{
  'name': 'Alex'
}

ត្រឹមត្រូវ

{
  "name": "Alex"
}

3. ឈ្មោះលក្ខណៈគ្មានសញ្ញាសម្រង់

ក្នុង JavaScript ពេលខ្លះអាចសរសេរ name ដោយគ្មានសញ្ញាសម្រង់។ ក្នុង JSON ឈ្មោះលក្ខណៈនីមួយៗត្រូវជាខ្សែអក្សរសញ្ញាសម្រង់ពីរ។

មិនត្រឹមត្រូវ

{
  name: "Alex",
  age: 30
}

ត្រឹមត្រូវ

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

4. សញ្ញាក្បៀសបាត់រវាងតម្លៃ

លក្ខណៈ និងធាតុអារេត្រូវការសញ្ញាក្បៀសនៅចន្លោះ។ ឧបករណ៍ញែកអាចរាយការណ៍ Unexpected token នៅសញ្ញាសម្រង់ ឬវង់ក្រចកបន្ទាប់ មិនមែននៅសញ្ញាក្បៀសបាត់។

មិនត្រឹមត្រូវ

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

ត្រឹមត្រូវ

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

5. វង់ក្រចកបាត់ ឬលើស

វត្ថុប្រើ { }។ អារេប្រើ [ ]។ JSON ដាក់ក្នុងគ្នាច្រើនតែបរាជ័យពេល ] បាត់ } លើស ឬផ្លាស់គ្នា។ រាប់គូបើក និងបិទ។

មិនត្រឹមត្រូវ

{
  "items": [1, 2
}

ត្រឹមត្រូវ

{
  "items": [1, 2]
}

6. លំដាប់ escape មិនត្រឹមត្រូវ

ក្នុងខ្សែអក្សរ JSON សញ្ញាទ្រេតក្រោយចាប់ផ្តើម escape។ លំដាប់ដូច " \ និង \n ត្រឹមត្រូវ។ ផ្លូវ Windows សរសេរ C:\Users មិនមែន: \U មិនមែន escape JSON ស្របច្បាប់។ ធ្វើសញ្ញាទ្រេតក្រោយពីរដង បើមិនដូច្នោះឧបករណ៍ញែកឈប់នៅតួអក្សរនោះ។

មិនត្រឹមត្រូវ

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

ត្រឹមត្រូវ

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

7. មតិក្នុង JSON

JSON ស្តង់ដារគ្មានមតិ។ ឧបករណ៍កំណត់ខ្លះទទួល // ឬ /* */ (JSONC, JSON5 និងស្រដៀង)។ នោះមិនមែន JSON ស្តង់ដារ ហើយ JSON.parse បដិសេធ។

មិនត្រឹមត្រូវ

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

Unexpected token មានន័យដូចម្តេច?

ឧបករណ៍ញែកបានជួបតួអក្សរមិនអនុញ្ញាតនៅទីតាំងនោះ។ កន្លែងរាយការណ៍គឺកន្លែងអានឈប់។ បើលុបសញ្ញាក្បៀសមុន កំហុសអាចចង្អុលទៅសញ្ញាសម្រង់នៃលក្ខណៈបន្ទាប់។ ពាក្យខុសគ្នាតាមពេលដំណើរការ; កុំរំពឹងថាកម្មវិធីរុករកនីមួយៗបោះពុម្ពប្រយោគដូចគ្នា។

Unexpected end of JSON input មានន័យដូចម្តេច?

អត្ថបទចប់មុនតម្លៃពេញលេញ។ មូលហេតុធម្មតា: } ឬ ] បាត់ ការបញ្ចូលកាត់ រូបកាយទទេ ឬចម្លើយ API ដាច់។ មិនមែនកំហុសតែមួយ។

ហេតុអ្វី JSON.parse() បរាជ័យ?

JSON.parse() ទទួលតែអត្ថបទ JSON ត្រឹមត្រូវ។ នេះជោគជ័យ:

const text = '{"name":"Alex"}';
const data = JSON.parse(text);

នេះបរាជ័យ ព្រោះសញ្ញាសម្រង់តែមួយមិនមែន JSON:

const text = "{'name':'Alex'}";
JSON.parse(text);

សារកំហុសពិតប្រាកដអាស្រ័យលើពេលដំណើរការ JavaScript។ ចាត់ទុកសារជាការណែនាំ បន្ទាប់មកពិនិត្យសញ្ញាក្បៀស សញ្ញាសម្រង់ និងវង់ក្រចកជិតទីតាំងនោះ។

JSON មិនដូចវត្ថុ JavaScript

លីតេរ៉ាល់វត្ថុ JavaScript អាចមើលទៅដូច { name: 'Alex' }។ JSON ត្រឹមត្រូវត្រូវមើលទៅដូច { "name": "Alex" }: ឈ្មោះ និងខ្សែអក្សរសញ្ញាសម្រង់ពីរ គ្មានសញ្ញាក្បៀសចុងក្រោយ គ្មានមតិ។

  • អត្ថបទ JSON
  • ឧបករណ៍ញែកអានថូខិន
  • ទិន្នន័យត្រឹមត្រូវ ឬ Unexpected token
សញ្ញាកំហុសគឺកន្លែងការញែកឈប់ ដែលអាចនៅក្រោយកំហុសពិត។

របៀបរកកំហុស JSON ឲ្យរហ័ស

ធ្វើតាមលំដាប់នេះ។ កុំចាប់ផ្តើមដោយសរសេរឯកសារទាំងមូលឡើងវិញ។

  1. ដាក់ JSON តាមឧបករណ៍ផ្ទៀងផ្ទាត់។
  2. អានកំហុសដំបូងដែលរាយការណ៍។
  3. មើលបន្តិចមុនទីតាំងរាយការណ៍។
  4. ពិនិត្យសញ្ញាក្បៀស ជាពិសេសចុងក្រោយ និងបាត់។
  5. ពិនិត្យសញ្ញាសម្រង់: ពីរតែប៉ុណ្ណោះ។
  6. ផ្គូផ្គង { } និង [ ]។
  7. ពិនិត្យ escape សញ្ញាទ្រេតក្រោយក្នុងខ្សែអក្សរ។
  8. ដកមតិបើត្រូវការ JSON តឹងរ៉ឹង។

ផែនទីរហ័សនៃការកែធម្មតា:

បញ្ហា ការកែ
សញ្ញាក្បៀសចុងក្រោយលុបសញ្ញាក្បៀសបន្ទាប់ពីធាតុចុងក្រោយ។
សញ្ញាសម្រង់តែមួយប្រើសញ្ញាសម្រង់ពីរសម្រាប់ឈ្មោះ និងខ្សែអក្សរ។
សោគ្មានសញ្ញាសម្រង់រុំឈ្មោះលក្ខណៈដោយសញ្ញាសម្រង់ពីរ។
សញ្ញាក្បៀសបាត់ដាក់សញ្ញាក្បៀសរវាងលក្ខណៈ ឬធាតុអារេ។
វង់ក្រចកបាត់បិទគូ { } និង [ ] រាល់គូ។
escape មិនត្រឹមត្រូវប្រើ escape ស្របច្បាប់ ឬធ្វើសញ្ញាទ្រេតក្រោយពីរដងក្នុងផ្លូវ។
មតិដក // និង /* */ សម្រាប់ JSON ស្តង់ដារ។

ផ្ទៀងផ្ទាត់ និងធ្វើទម្រង់ JSON ក្នុងកម្មវិធីរុករក

NEXNARA រៀប JSON / Diff អាចពិនិត្យ JSON លើឧបករណ៍នេះ។

អ្នកអាចផ្ទៀងផ្ទាត់ ធ្វើឲ្យស្អាតដោយចន្លោះ ២ ចន្លោះ ៤ ឬថេប minify ប្រៀបធៀបឯកសារពីរ (JSON Diff) និងបើកឯកសារ .json។ ការញែកប្រើ JSON.parse ក្នុងកម្មវិធីរុករក មិនមែន eval។

ឯកសារធំជាង 5 MB អាចហាក់យឺត។ អត្ថបទធំជាង 15 MB មិនដំណើរការក្នុងកម្មវិធីរុករក ដើម្បីឲ្យទំព័រនៅតែឆ្លើយតប។

ការដំណើរការ JSON ខ្លួនឯងកើតក្នុងកម្មវិធីរុករករបស់អ្នក។ អត្ថបទមិនផ្ញើទៅម៉ាស៊ីនមេ NEXNARA សម្រាប់ឧបករណ៍នេះ។ ពាណិជ្ជកម្ម និងលក្ខណៈគេហទំព័រផ្សេងទៀតនៅតែប្រើបណ្តាញ; នោះដាច់ដោយឡែកពីការដំណើរការ។

ត្រូវពិនិត្យ JSON មិនត្រឹមត្រូវ? បើក រៀប JSON / Diff ហើយបិទភ្ជាប់អត្ថបទ។

FAQ

ហេតុអ្វី JSON របស់ខ្ញុំនិយាយ Unexpected token?

ឧបករណ៍ញែកបានជួបតួអក្សរមិនអនុញ្ញាតនៅទីនោះ។ កំហុសពិត—ជាញឹកញាប់សញ្ញាក្បៀសបាត់ ឬសញ្ញាសម្រង់តែមួយ—អាចនៅមុនទីតាំងនោះបន្តិច។

សញ្ញាក្បៀសចុងក្រោយអនុញ្ញាតក្នុង JSON ទេ?

ទេ។ JSON ស្តង់ដារមិនអនុញ្ញាតសញ្ញាក្បៀសបន្ទាប់ពីលក្ខណៈ ឬធាតុអារេចុងក្រោយ។ លីតេរ៉ាល់វត្ថុ JavaScript ច្រើនតែអនុញ្ញាត។

JSON អាចប្រើសញ្ញាសម្រង់តែមួយទេ?

ទេ។ ឈ្មោះលក្ខណៈ និងខ្សែអក្សរត្រូវប្រើសញ្ញាសម្រង់ពីរ។

JSON អាចមានមតិទេ?

មិនមែនក្នុង JSON ស្តង់ដារ។ ឧបករណ៍ខ្លះទទួល JSONC ឬ JSON5 មានមតិ; JSON.parse នៅតែបដិសេធ។

ហេតុអ្វី JSON.parse() បរាជ័យ?

ខ្សែអក្សរមិនមែន JSON ត្រឹមត្រូវ។ មូលហេតុធម្មតាគឺសញ្ញាក្បៀសចុងក្រោយ សញ្ញាសម្រង់តែមួយ សោគ្មានសញ្ញាសម្រង់ មតិ ឬតម្លៃកាត់។ សារពិតប្រាកដអាស្រ័យលើពេលដំណើរការ។

តើពិនិត្យថា JSON ត្រឹមត្រូវដោយរបៀបណា?

បិទភ្ជាប់ទៅឧបករណ៍ផ្ទៀងផ្ទាត់ដូច រៀប JSON / Diff ឬហៅ JSON.parse ក្នុងកុងសូល។ បើការញែកបោះករណីលើកលែង អត្ថបទមិនមែន JSON ត្រឹមត្រូវ។