Tech Help
JSON.parse nima uchun "Unexpected token" deydi?
JSON.parse matn to‘g‘ri JSON bo‘lmaganda Unexpected token tashlaydi. Yakka qo‘shtirnoq, oxirgi vergul, HTML javoblar va xato o‘rnini tuzating.
JSON.parse() kirish to‘g‘ri JSON bo‘lmasa SyntaxError tashlaydi. “Unexpected token” odatda tahlilchi tuzilmaning o‘sha nuqtasida ruxsat etilmagan belgigacha yetganini anglatadi.
Odatiy sabablar: yakka qo‘shtirnoq, oxirgi vergul, qo‘shtirnoqsiz xossa nomlari, noto‘g‘ri qator qochishi, JSON atrofidagi ortiqcha matn, yoki HTML yoxud boshqa JSON bo‘lmagan tanani JSON deb tahlil qilish.
Xatoning aniq ifodasi JavaScript dvigateli va brauzerga qarab o‘zgaradi. Har runtime «Unexpected token X in JSON at position N» chiqaradi deb o‘ylamang.
Bu JSON.parse da Unexpected token tuzatish: xato nimani anglatadi, o‘rinni qanday o‘qish, tana HTML bo‘lsa nima qilish. Oxirgi vergul, qo‘shtirnoq va Unexpected end kengroq Odatiy JSON xatolari: oxirgi vergul, qo‘shtirnoq va Unexpected token da.
JSON.parse() da “Unexpected token” nimani anglatadi?
JSON.parse() JSON grammatikasini talab qiladi. Joriy o‘rindagi noqonuniy belgi SyntaxError tashlaydi. {“name”:“Alex”,} noto‘g‘ri: o‘sha verguldan keyin obyekt tugay olmaydi. Xabar matni va o‘rin hali runtime ga qarab farq qiladi.
JSON.parse() qanday xato tashlaydi?
Noto‘g‘ri JSON odatda SyntaxError tashlaydi. Turini tasdiqlash uchun error.name ni yozing. Butun error.message ni qotirmang: dvigatellar va versiyalar boshqacha ifodalaydi.
try {
JSON.parse('{"name":"Alex",}');
} catch (error) {
console.log(error.name);
// SyntaxError
}
1. Qo‘shaloq o‘rniga yakka qo‘shtirnoq
{‘name’:‘Alex’} noto‘g‘ri JSON. {“name”:“Alex”} to‘g‘ri. JSON qatorlari va obyekt a’zo nomlari qo‘shaloq qo‘shtirnoq ishlatadi. const user = { name: ‘Alex’ } kabi JavaScript obyekt literali qonuniy JavaScript bo‘lishi mumkin, lekin baribir JSON matn bo‘lmasligi mumkin.
Noto‘g‘ri
{'name':'Alex'}
To‘g‘ri
{"name":"Alex"}
2. Oxirgi vergullar
Oxirgi xossa yoki massiv elementidan keyingi vergul to‘g‘ri standart JSON emas. {“name”:“Alex”,“age”:30,} va [1, 2, 3,] ikkalasi ham yiqiladi. Buni Unexpected token sababi deb oling; Odatiy JSON xatolari: oxirgi vergul, qo‘shtirnoq va Unexpected token oxirgi vergullarni chuqurroq yoritadi.
Noto‘g‘ri
{
"name": "Alex",
"age": 30,
}
To‘g‘ri
{
"name": "Alex",
"age": 30
}
[1, 2, 3,]
3. Qo‘shtirnoqsiz xossa nomlari
{ name: “Alex” } JavaScript obyekt literali bo‘lishi mumkin. JSON da a’zo nomlari qator va qo‘shaloq qo‘shtirnoq kerak: {“name”:“Alex”}.
Noto‘g‘ri
{
name: "Alex"
}
To‘g‘ri
{
"name": "Alex"
}
4. Noto‘g‘ri qator qochishi
JSON matnda teskari chiziq qochishni boshlaydi. C:\Users\Alex kabi xom yo‘l noto‘g‘ri, chunki \U qonuniy qochish emas. Teskari chiziqlarni ikki barobar qiling. Mezbon til qochishini JSON qochishi bilan aralashtirmang. Odatiy JSON xatolari: oxirgi vergul, qo‘shtirnoq va Unexpected token buni chuqurroq yoritadi.
Noto‘g‘ri
{"file":"C:\Users\Alex"}
To‘g‘ri
{"file":"C:\\Users\\Alex"}
5. JSON dan oldin yoki keyin ortiqcha matn
JSON.parse bitta JSON qiymat kutadi. {“ok”:true} oldidagi Success: prefiksi yoki orqasidagi done suffiksi butun qatorni noto‘g‘ri qiladi. Bitta JSON qiymat atrofidagi ahamiyatsiz bo‘sh joy ruxsat etiladi. JSON qiymatdan oldin yoki keyin bo‘shliqni taqiqlamaydi.
Success:
{"ok":true}
{"ok":true}
done
6. JSON o‘rniga HTML tahlil qilish
HTML sahifaga response.json() chaqirish odatiy Unexpected token holat. Noto‘g‘ri endpointlar, 404 yoki 500 HTML sahifalar, login yo‘naltirishlari, proksi tanalar va zaxira sahifalar ko‘pincha belgilash bilan boshlanadi. «Unexpected token < har doim HTML» juda qattiq: < ishora, isbot emas.
fetch('/api/data')
.then(response => response.json())
“Unexpected token <” odatda nimani anglatadi?
JSON qiymatlar odatda < bilan boshlanmaydi. Tana yoki bilan boshlasa, < birinchi noqonuniy belgi bo‘lishi mumkin. Mahalliy tuzatishda HTTP holat, Content-Type va xom tanani ko‘ring. Dvigatel ifodasi hali farq qiladi.
Tahlildan oldin javobni tekshiring
fetch tanasi faqat bir marta sarflanishi mumkin. Mahalliy tuzatishda avval text() o‘qing, qisqa prefiksni ko‘ring, so‘ng o‘sha qatorga JSON.parse qo‘llang. Bir javobga avval response.json(), keyin response.text() chaqirmang. Ishlab chiqarishdagi sezgir yuklarni sukut bo‘yicha yozmang.
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” nimani anglatadi?
Ba’zi dvigatellar o‘rin, qator yoki ustunni bildiradi. Yaqinda noto‘g‘ri qo‘shtirnoq, vergul, qavs yoki qochish qidiring. O‘sha indeks tahlil muammoni sezgan joy; haqiqiy sabab oldinroq bo‘lishi mumkin. Aniq nosoz belgi ekaniga kafolat yo‘q.
Unexpected token Unexpected end ga qarshi
Unexpected token tahlilchi kutmagan belgi uchraganini anglatadi. Unexpected end kirish qiymat tugamasdan to‘xtaganda chiqishi mumkin, masalan {“name”:“Alex” yopuvchi qavssiz. Aniq ifoda dvigatelga bog‘liq. Odatiy JSON xatolari: oxirgi vergul, qo‘shtirnoq va Unexpected token to‘liq bo‘lmagan JSON ni kengroq yoritadi.
{"name":"Alex"
JSON JavaScript obyekt literali bilan bir xil emas
JSON ma’lumot formati. JavaScript obyekt literali JavaScript sintaksisi. Qo‘shtirnoqsiz kalitlar, yakka qo‘shtirnoq va oxirgi vergulli JS obyekt to‘g‘ri JSON matn emas. JSON.parse JavaScript obyekt literallarini xavfsiz tahlil qila olmaydi.
const data = {
name: 'Alex',
active: true,
};
{
"name": "Alex",
"active": true
}
JSON izoh saqlashi mumkinmi?
Standart JSON izohlarni qo‘llab-quvvatlamaydi. Obyekt ichidagi // qator noto‘g‘ri. JSON5 va o‘xshash kengaytmalar boshqa format. JSON formatlash va solishtirish standart JSON ni JSON.parse bilan tekshiradi va JSON5 ni JSON deb hisoblamaydi.
{
// user name
"name": "Alex"
}
undefined, NaN va Infinity to‘g‘ri JSON mi?
Yo‘q. JSON qiymatlar obyekt, massiv, qator, son, true, false va null. undefined, NaN va Infinity emas. Yuqori daraja qiymat obyekt yoki massiv bo‘lishi shart emas: true, 123, “hello” va null to‘g‘ri JSON.
{"a":undefined}
{"a":NaN}
{"a":Infinity}
true
123
"hello"
null
Unexpected token xatosini qadam-baqadam qanday tuzatish
Xato qatori emas, manba bilan ishlang:
- Kirish haqiqatan JSON ekanini tasdiqlang, HTML, jurnallar yoki JavaScript emas.
- Xom kirishning birinchi belgilarini ko‘ring.
- API dan kelsa, HTTP holat va Content-Type ni tekshiring. Na 200, na application/json to‘g‘ri JSON kafolatlamaydi.
- Sintaksisni JSON tahlilchisida tekshiring.
- Bildirilgan o‘rin, qator yoki ustunni ishora sifatida ishlating, kafolatlangan ildiz sabab sifatida emas.
- O‘sha hudud yaqinida qo‘shtirnoq, vergul, jingalak qavs, kvadrat qavs va qochishlarni tekshiring.
- Formatlangan, tekshirilgan nusxa bilan solishtiring.
- Serializator yoki endpoint ni tuzating. Bildirilgan tokenni tasodifan o‘chirmang.
' ni " ga global almashtirish qator ichidagi apostroflar, allaqachon qochirilgan matn va JSON bo‘lmagan manbalarni buzishi mumkin. To‘g‘ri JSON ni haqiqiy serializatordan chiqaring. eval ni JSON tahlilchisi deb hisoblamang.
JavaScript da JSON ishlab chiqarayotganda JSON.stringify() ishlating
Qatorlarni qo‘lda ulashdan ko‘ra JSON.stringify ni afzal ko‘ring. Serializatsiya qilgan qiymatlar uchun to‘g‘ri JSON matn chiqaradi. Har JavaScript qiymatini saqlamaydi: undefined, funksiyalar va belgilar maxsus xatti-harakatga ega. Bu tafsilot bu yerda doiradan tashqari.
const data = {
name: "Alex",
active: true
};
const json = JSON.stringify(data);
// {"name":"Alex","active":true}
Noto‘g‘ri JSON haqiqiy tuzatishga qarshi
Bu juftlar JSON.parse bilan tekshirildi. HTML uchun tuzatish javob, sintaksis tahriri emas.
| Muammo | Noto‘g‘ri | Tuzatish |
|---|---|---|
| Yakka qo‘shtirnoq | {'a':1} |
{"a":1} |
| Oxirgi vergul | {"a":1,} |
{"a":1} |
| Qo‘shtirnoqsiz kalit | {a:1} |
{"a":1} |
| undefined | {"a":undefined} |
{"a":null} |
| HTML tana | <html>... |
Endpoint va xom javobni tekshiring. HTML ni JSON ga tahrir qilmang. |
Unexpected token uchun oddiy qaror qo‘llanmasi
JSON.parse yiqilsa, qo‘shtirnoqlarni qayta yozishdan oldin umuman JSON bormi, qaror qiling.
- JSON.parse yiqildi
- API danmi? Holat, Content-Type va xom tanani tekshiring
- JSON bilan boshlanadimi? Bo‘lmasa, manba yoki endpoint ni tuzating
- Ha bo‘lsa, qo‘shtirnoq, vergul, qavs, kvadrat qavs, qochish, qo‘llab-quvvatlanmagan qiymatlarni tekshiring
- Bildirilgan o‘rinni ishora sifatida ishlating
- Manbani tuzating, so‘ng qayta tahlil qiling
Tahlil yoki ishlatishdan oldin JSON ni tekshiring
NEXNARA JSON formatlash va solishtirish brauzerda JSON ni JSON.parse bilan tekshiradi—eval emas.
Tekshiring, 2 bo‘shliq, 4 bo‘shliq yoki tab bilan chiroyli qiling, minify, nusxa, yuklab oling va .json yuklang. JSON Diff ichma-ich obyekt va massivlar, yo‘llar, xulosa, filtrlar va almashtirishni qamraydi. Tahlildan keyin bir xil ma’lumotning chiroyli va minify nusxalari teng solishtiriladi; obyekt kalitlari nom bo‘yicha solishtiriladi.
5 MB dan katta matn sekin tuyulishi mumkin. 15 MB dan katta matn brauzerda qayta ishlanmaydi.
JSON tekshirish va formatlash brauzeringizda sodir bo‘ladi. Bu vosita JSON ni NEXNARA serveriga yubormaydi. Reklama va saytning boshqa xususiyatlari hali tarmoq ishlatadi.
Yiqilayotgan qatorni JSON formatlash va solishtirish ga joylashtiring va qo‘shtirnoqlarni qayta yozishdan oldin birinchi belgilarni o‘qing.
FAQ
JSON.parse nima uchun Unexpected token deydi?
Matn tahlilchi to‘xtagan nuqtada to‘g‘ri JSON emas. Odatiy sabablar qo‘shtirnoq, vergul, ortiqcha matn yoki HTML kabi JSON bo‘lmagan tana.
Unexpected token < in JSON nimani anglatadi?
Birinchi noqonuniy belgi < bo‘lishi mumkin. Bu ko‘pincha HTML sahifaga ishora qiladi, lekin har holatda 404 yoki HTML isboti emas. Holat, Content-Type va xom tanani tekshiring.
JSON da xato o‘rnini qanday topaman?
Dvigatel o‘rin, qator yoki ustun bildirsa, yaqiniga qarang. Haqiqiy xato oldinroq bo‘lishi mumkin. Ishora sifatida ishlating, so‘ng tekshiring.
JSON yakka qo‘shtirnoq ishlata oladimi?
Yo‘q. Standart JSON qatorlari va a’zo nomlari qo‘shaloq qo‘shtirnoq ishlatadi.
JSON da oxirgi vergul bo‘lishi mumkinmi?
Yo‘q. Standart JSON oxirgi xossa yoki massiv elementidan keyin vergulga ruxsat bermaydi.
Qator to‘g‘ri JSON ekanini qanday tekshiraman?
try/catch ichida JSON.parse chaqiring, yoki matnni JSON formatlash va solishtirish ga joylashtiring. Tahlil SyntaxError tashlasa, qator to‘g‘ri JSON emas.