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 օրինական 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 չէ։