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.