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 зэрэг дараалал зөв. C:\Users гэж бичсэн Windows зам биш: \U хууль ёсны JSON escape биш. Урвуу налуу зураасыг хоёр дахин болго, эс тэгвэл шинжлэгч тэр тэмдэгт дээр зогсоно.

Буруу

{"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 шалгаж чадна.

Шалгаж, 2 зай, 4 зай эсвэл табаар гоё болгож, 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 биш.