Tech Help
JSON.parse ले "Unexpected token" किन भन्छ?
पाठ मान्य JSON नभए JSON.parse ले Unexpected token फ्याँक्छ। एकल उद्धरण, अन्त्यको अल्पविराम, HTML प्रतिक्रिया र त्रुटि स्थान डिबग गर्नुहोस्।
इनपुट मान्य JSON नभए JSON.parse() ले SyntaxError फ्याँक्छ। “Unexpected token” सामान्यतया पार्सर संरचनाको त्यस बिन्दुमा अनधिकृत अक्षर पुग्यो भन्ने अर्थ हो।
सामान्य कारण: एकल उद्धरण, अन्त्यको अल्पविराम, उद्धरण नभएका गुण नाम, गलत स्ट्रिङ एस्केप, JSON वरिपरि अतिरिक्त पाठ, वा HTML वा अन्य गैर-JSON बडीलाई JSON जस्तो पार्स गर्नु।
त्रुटिको ठीक शब्द JavaScript इन्जिन र ब्राउजरअनुसार फरक हुन्छ। हरेक रनटाइमले “Unexpected token X in JSON at position N” छाप्छ भनी नमान्नुहोस्।
यो JSON.parse Unexpected token निवारण हो: त्रुटिको अर्थ, स्थान कसरी पढ्ने, र बडी HTML हुँदा के गर्ने। अन्त्यको अल्पविराम, उद्धरण र Unexpected end को व्यापक कभरेज सामान्य JSON त्रुटिहरू: अन्त्यको अल्पविराम, उद्धरण र Unexpected token मा छ।
JSON.parse() मा “Unexpected token” को अर्थ के हो?
JSON.parse() लाई JSON व्याकरण चाहिन्छ। हालको स्थानमा अवैध अक्षरले SyntaxError फ्याँक्छ। {“name”:“Alex”,} अमान्य छ: त्यो अल्पविरामपछि वस्तु सकिन सक्दैन। सन्देश पाठ र स्थान रनटाइमअनुसार अझै फरक हुन्छन्।
JSON.parse() ले कुन त्रुटि फ्याँक्छ?
अमान्य JSON सामान्यतया SyntaxError फ्याँक्छ। प्रकार पुष्टि गर्न error.name लग गर्नुहोस्। पूरा error.message हार्डकोड नगर्नुहोस्: इन्जिन र संस्करणले फरक शब्द प्रयोग गर्छन्।
try {
JSON.parse('{"name":"Alex",}');
} catch (error) {
console.log(error.name);
// SyntaxError
}
1. दोहोरो उद्धरणको सट्टा एकल उद्धरण
{‘name’:‘Alex’} अमान्य JSON हो। {“name”:“Alex”} मान्य हो। JSON स्ट्रिङ र वस्तु सदस्य नामले दोहोरो उद्धरण प्रयोग गर्छन्। const user = { name: ‘Alex’ } जस्तो JavaScript वस्तु लिटरल कानुनी JavaScript हुन सक्छ र पनि JSON पाठ होइन।
अमान्य
{'name':'Alex'}
मान्य
{"name":"Alex"}
2. अन्त्यका अल्पविराम
अन्तिम गुण वा एरे वस्तुपछि अल्पविराम मान्य मानक JSON होइन। {“name”:“Alex”,“age”:30,} र [1, 2, 3,] दुवै असफल हुन्छन्। यसलाई Unexpected token को एउटा कारण मान्नुहोस्; सामान्य JSON त्रुटिहरू: अन्त्यको अल्पविराम, उद्धरण र Unexpected token ले अन्त्यका अल्पविराम अझ गहिराइमा कभर गर्छ।
अमान्य
{
"name": "Alex",
"age": 30,
}
मान्य
{
"name": "Alex",
"age": 30
}
[1, 2, 3,]
3. उद्धरण नभएका गुण नाम
{ name: “Alex” } JavaScript वस्तु लिटरल हुन सक्छ। JSON मा सदस्य नाम स्ट्रिङ हुन् र तिनीहरूलाई दोहोरो उद्धरण चाहिन्छ: {“name”:“Alex”}।
अमान्य
{
name: "Alex"
}
मान्य
{
"name": "Alex"
}
4. अमान्य स्ट्रिङ एस्केप
JSON पाठमा ब्याकस्ल्यासले एस्केप सुरु गर्छ। C:\Users\Alex जस्तो कच्चा पथ अमान्य छ किनभने \U कानुनी एस्केप होइन। ब्याकस्ल्यास दोब्बर पार्नुहोस्। होस्ट-भाषा स्ट्रिङ एस्केपलाई JSON एस्केपसँग नमिसाउनुहोस्। सामान्य JSON त्रुटिहरू: अन्त्यको अल्पविराम, उद्धरण र Unexpected token ले यसलाई अझ गहिराइमा कभर गर्छ।
अमान्य
{"file":"C:\Users\Alex"}
मान्य
{"file":"C:\\Users\\Alex"}
5. JSON अघि वा पछि अतिरिक्त पाठ
JSON.parse एउटा JSON मान अपेक्षा गर्छ। {“ok”:true} अघि Success: जस्तो उपसर्ग, वा पछि done जस्तो प्रत्यय, पूरै स्ट्रिङ अमान्य पार्छ। एउटा JSON मान वरिपरि महत्वहीन व्हाइटस्पेस अनुमति छ। JSON मान अघि वा पछि स्पेस निषेध छैन।
Success:
{"ok":true}
{"ok":true}
done
6. JSON को सट्टा HTML पार्स गर्नु
HTML पृष्ठमा response.json() कल गर्नु सामान्य Unexpected token मामिला हो। गलत endpoint, 404 वा 500 HTML पृष्ठ, लगइन रिडाइरेक्ट, प्रोक्सी बडी र फलब्याक पृष्ठ प्रायः मार्कअपबाट सुरु हुन्छन्। “Unexpected token < सधैं HTML” धेरै कडा छ: < सुराग हो, प्रमाण होइन।
fetch('/api/data')
.then(response => response.json())
“Unexpected token <” सामान्यतया के अर्थ?
JSON मान सामान्यतया < बाट सुरु हुँदैनन्। बडी वा बाट सुरु भए < पहिलो अवैध अक्षर हुन सक्छ। स्थानीय डिबगमा HTTP स्थिति, Content-Type र कच्चा बडी जाँच्नुहोस्। इन्जिनका शब्द अझै फरक हुन्छन्।
पार्स गर्नुअघि प्रतिक्रिया जाँच्नुहोस्
fetch बडी एक पटक मात्र खपत गर्न सकिन्छ। स्थानीय डिबगमा पहिले text() पढ्नुहोस्, छोटो उपसर्ग हेर्नुहोस्, त्यसपछि त्यही स्ट्रिङमा JSON.parse गर्नुहोस्। एउटै प्रतिक्रियामा response.json() पछि response.text() नबोलाउनुहोस्। संवेदनशील प्रोडक्सन पेलोड पूर्वनिर्धारित रूपमा लग नगर्नुहोस्।
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” को अर्थ के हो?
केही इन्जिनले स्थान, पङ्क्ति वा स्तम्भ बताउँछन्। नजिकै खराब उद्धरण, अल्पविराम, ब्रेस वा एस्केप हेर्नुहोस्। त्यो इन्डेक्स पार्सले समस्या देखेको ठाउँ हो; वास्तविक कारण अघि हुन सक्छ। त्यो ठीक दोषी अक्षर हुने ग्यारेन्टी छैन।
Unexpected token बनाम Unexpected end
Unexpected token को अर्थ पार्सरले नसोचेको अक्षर भेट्यो। Unexpected end मान पूरा हुनुअघि इनपुट रोकिएमा देखिन सक्छ, जस्तै बन्द ब्रेस नभएको {“name”:“Alex”। ठीक शब्द इन्जिनमा निर्भर छ। सामान्य JSON त्रुटिहरू: अन्त्यको अल्पविराम, उद्धरण र Unexpected token ले अधूरो JSON व्यापक कभर गर्छ।
{"name":"Alex"
JSON JavaScript वस्तु लिटरल जस्तै होइन
JSON डेटा ढाँचा हो। JavaScript वस्तु लिटरल JavaScript वाक्यविन्यास हो। उद्धरण नभएका कुञ्जी, एकल उद्धरण र अन्त्यको अल्पविराम भएको JS वस्तु मान्य JSON पाठ होइन। JSON.parse ले JavaScript वस्तु लिटरल सुरक्षित रूपमा पार्स गर्न सक्दैन।
const data = {
name: 'Alex',
active: true,
};
{
"name": "Alex",
"active": true
}
JSON मा टिप्पणी हुन सक्छ?
मानक JSON ले टिप्पणी समर्थन गर्दैन। वस्तुभित्र // पङ्क्ति अमान्य छ। JSON5 र यस्तै विस्तार फरक ढाँचा हुन्। JSON मिलाउनुहोस् / Diff ले मानक JSON JSON.parse बाट मान्य गर्छ र JSON5 लाई JSON मान्दैन।
{
// user name
"name": "Alex"
}
undefined, NaN र Infinity मान्य JSON हुन्?
होइन। JSON मान वस्तु, एरे, स्ट्रिङ, सङ्ख्या, true, false र null हुन्। undefined, NaN र Infinity होइनन्। शीर्ष-स्तरीय मान वस्तु वा एरे हुनै पर्दैन: true, 123, “hello” र null मान्य JSON हुन्।
{"a":undefined}
{"a":NaN}
{"a":Infinity}
true
123
"hello"
null
Unexpected token त्रुटि चरणबद्ध कसरी सच्याउने
त्रुटि स्ट्रिङमा होइन, स्रोतमा काम गर्नुहोस्:
- इनपुट साँच्चै JSON हो भनी पुष्टि गर्नुहोस्—HTML, लग वा JavaScript होइन।
- कच्चा इनपुटका पहिला अक्षर हेर्नुहोस्।
- API बाट आएको भए HTTP स्थिति र Content-Type जाँच्नुहोस्। न 200 न application/json ले मान्य JSONको ग्यारेन्टी दिँदैनन्।
- वाक्यविन्यास JSON पार्सरमा मान्य गर्नुहोस्।
- बताइएको स्थान, पङ्क्ति वा स्तम्भलाई सुराग बनाउनुहोस्, ग्यारेन्टी मूल कारण होइन।
- त्यस क्षेत्र नजिक उद्धरण, अल्पविराम, ब्रेस, कोष्ठक र एस्केप जाँच्नुहोस्।
- ढाँचा मिलाइएको, मान्य प्रतिलिपिसँग तुलना गर्नुहोस्।
- सिरियलाइजर वा endpoint सच्याउनुहोस्। बताइएको टोकन जथाभावी नमेट्नुहोस्।
' लाई " ले विश्वव्यापी बदल्दा स्ट्रिङभित्र एपोस्ट्रोफी, पहिले नै एस्केप भएको पाठ र गैर-JSON स्रोत बिग्रन सक्छ। वास्तविक सिरियलाइजरबाट मान्य JSON बनाउनुहोस्। eval लाई JSON पार्सर नमान्नुहोस्।
JavaScript मा JSON बनाउँदा JSON.stringify() प्रयोग गर्नुहोस्
हातले स्ट्रिङ जोड्नुभन्दा JSON.stringify राम्रो हो। यसले सिरियलाइज गर्ने मानका लागि मान्य JSON पाठ दिन्छ। हरेक JavaScript मान रहँदैन: undefined, फङ्सन र प्रतीकको विशेष व्यवहार छ। त्यो विवरण यहाँ दायरा बाहिर छ।
const data = {
name: "Alex",
active: true
};
const json = JSON.stringify(data);
// {"name":"Alex","active":true}
अमान्य JSON बनाम वास्तविक सुधार
यी जोडी JSON.parse ले जाँचिएका हुन्। HTML का लागि सुधार प्रतिक्रिया हो, वाक्यविन्यास सम्पादन होइन।
| समस्या | अमान्य | सुधार |
|---|---|---|
| एकल उद्धरण | {'a':1} |
{"a":1} |
| अन्त्यको अल्पविराम | {"a":1,} |
{"a":1} |
| उद्धरण नभएको कुञ्जी | {a:1} |
{"a":1} |
| undefined | {"a":undefined} |
{"a":null} |
| HTML बडी | <html>... |
endpoint र कच्चा प्रतिक्रिया जाँच्नुहोस्। HTML सम्पादन गरेर JSON नबनाउनुहोस्। |
Unexpected token का लागि सरल निर्णय गाइड
JSON.parse असफल भए उद्धरण फेरि लेख्नुअघि तपाईंसँग JSON छ कि छैन निर्णय गर्नुहोस्।
- JSON.parse असफल
- API बाट? स्थिति, Content-Type र कच्चा बडी जाँच्नुहोस्
- JSON बाट सुरु हुन्छ? होइन भने स्रोत वा endpoint सच्याउनुहोस्
- हो भने उद्धरण, अल्पविराम, ब्रेस, कोष्ठक, एस्केप, असमर्थित मान जाँच्नुहोस्
- बताइएको स्थानलाई सुराग बनाउनुहोस्
- स्रोत सच्याएर फेरि पार्स गर्नुहोस्
पार्स वा प्रयोग गर्नुअघि JSON मान्य गर्नुहोस्
NEXNARA JSON मिलाउनुहोस् / Diff ले ब्राउजरमा JSON JSON.parse बाट मान्य गर्छ—eval बाट होइन।
मान्य गर्नुहोस्, 2 स्पेस, 4 स्पेस वा ट्याबले प्रिटी-प्रिन्ट, minify, कपी, डाउनलोड र .json अपलोड। JSON Diff नेस्टेड वस्तु र एरे, पथ, सारांश, फिल्टर र स्व्याप कभर गर्छ। पार्सपछि उही डेटाका प्रिटी र minify प्रतिलिपि बराबर तुलना हुन्छन्; वस्तु कुञ्जी नामले तुलना हुन्छन्।
5 MB भन्दा ठूलो पाठ ढिलो लाग्न सक्छ। 15 MB भन्दा ठूलो पाठ ब्राउजरमा प्रक्रिया हुँदैन।
JSON मान्यता र ढाँचा मिलाउने काम तपाईंको ब्राउजरमा हुन्छ। यो उपकरणले JSON NEXNARA सर्भरमा पठाउँदैन। विज्ञापन र अन्य साइट सुविधा अझै सञ्जाल प्रयोग गर्छन्।
असफल स्ट्रिङ JSON मिलाउनुहोस् / Diff मा टाँस्नुहोस् र उद्धरण फेरि लेख्नुअघि पहिला अक्षर पढ्नुहोस्।
FAQ
JSON.parse ले Unexpected token किन भन्छ?
पार्सर रोकिएको बिन्दुमा पाठ मान्य JSON होइन। सामान्य कारण उद्धरण, अल्पविराम, अतिरिक्त पाठ, वा HTML जस्तो गैर-JSON बडी हुन्।
JSON मा Unexpected token < को अर्थ के हो?
पहिलो अवैध अक्षर < हुन सक्छ। त्यो प्रायः HTML पृष्ठतिर संकेत गर्छ, तर हरेक मामिलामा 404 वा HTML को प्रमाण होइन। स्थिति, Content-Type र कच्चा बडी जाँच्नुहोस्।
JSON मा त्रुटि स्थान कसरी खोज्ने?
इन्जिनले स्थान, पङ्क्ति वा स्तम्भ बताए नजिकै हेर्नुहोस्। वास्तविक गल्ती अघि हुन सक्छ। सुराग बनाउनुहोस्, त्यसपछि मान्य गर्नुहोस्।
JSON ले एकल उद्धरण प्रयोग गर्न सक्छ?
सक्दैन। मानक JSON स्ट्रिङ र सदस्य नामले दोहोरो उद्धरण प्रयोग गर्छन्।
JSON मा अन्त्यको अल्पविराम हुन सक्छ?
सक्दैन। मानक JSON ले अन्तिम गुण वा एरे वस्तुपछि अल्पविराम अनुमति दिँदैन।
स्ट्रिङ मान्य JSON हो कसरी जाँच्ने?
try/catch मा JSON.parse बोलाउनुहोस्, वा पाठ JSON मिलाउनुहोस् / Diff मा टाँस्नुहोस्। पार्सले SyntaxError फ्याँक्यो भने स्ट्रिङ मान्य JSON होइन।