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 ажиллах орчноос хамаарна. Мессежийг зөвлөмж гэж үзээд тэр байрлалын ойролцоо таслал, хашилт, хаалтыг шалгана уу.
JavaScript объектын литерал { name: 'Alex' } шиг харагдаж болно. Зөв JSON { "name": "Alex" } шиг харагдах ёстой: хоёр хашилттай нэр, мөр, төгсгөлийн таслалгүй, тайлбаргүй.
- JSON текст
- Шинжлэгч тэмдэг уншина
- Зөв өгөгдөл эсвэл Unexpected token
JSON алдааг хурдан хэрхэн олох
Энэ дарааллаар ажиллана уу. Бүх файлыг дахин бичиж эхлэх хэрэггүй.
- JSON-г шалгагчаар дамжуулна уу.
- Эхний мэдээлсэн алдааг уншина уу.
- Мэдээлсэн байрлалаас жаахан өмнө харна уу.
- Таслалыг шалга, ялангуяа төгсгөл болон дутууг.
- Хашилтыг шалга: зөвхөн хоёр.
- { } болон [ ] тааруулна уу.
- Мөрөн дэх урвуу налуу зураасны escape-г шалгана уу.
- Хатуу 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 биш.