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 ရန်တိုင်းပေါ် မူတည်သည်။ စာတိုကို အရိပ်အမြွက်အဖြစ် သဘောထားပြီး ထိုနေရာအနီး ကော်မာ၊ ကိုးကားနှင့် ကွင်းများကို စစ်ဆေးပါ။

JSON သည် JavaScript အရာဝတ္ထုနှင့် မတူ

JavaScript အရာဝတ္ထု လစ်တရယ်သည် { name: 'Alex' } ကဲ့သို့ ဖြစ်နိုင်သည်။ မှန်ကန်သော JSON သည် { "name": "Alex" } ကဲ့သို့ ဖြစ်ရမည်: နှစ်ထပ်ကိုးကား အမည်နှင့် စာကြောင်းများ၊ နောက်ဆုံးကော်မာ မရှိ၊ မှတ်ချက် မရှိ။

  • JSON စာသား
  • ခွဲခြမ်းစိတ်ဖြာသူသည် တိုကင်များကို ဖတ်သည်
  • မှန်ကန်သော ဒေတာ သို့မဟုတ် Unexpected token
အမှားအမှတ်သည် ခွဲခြမ်းစိတ်ဖြာမှု ရပ်သည့်နေရာဖြစ်ပြီး အမှန်တကယ် အမှားနောက်တွင် ရှိနိုင်သည်။

JSON အမှားကို မြန်မြန် ရှာနည်း

ဤအစဉ်အတိုင်း လုပ်ပါ။ ဖိုင်တစ်ခုလုံး ပြန်ရေး၍ မစပါနှင့်။

  1. JSON ကို စစ်ဆေးကိရိယာဖြင့် ဖြတ်ပါ။
  2. ပထမ အစီရင်ခံသော အမှားကို ဖတ်ပါ။
  3. အစီရင်ခံသော နေရာထက် အနည်းငယ် ရှေ့ကို ကြည့်ပါ။
  4. ကော်မာများကို စစ်ဆေးပါ၊ အထူးသဖြင့် နောက်ဆုံးနှင့် ပျောက်သော။
  5. ကိုးကားများကို စစ်ဆေးပါ: နှစ်ထပ်သာ။
  6. { } နှင့် [ ] ကို တွဲပါ။
  7. စာကြောင်းများတွင် နောက်သို့စောင်းသော မျဉ်း escape ကို စစ်ဆေးပါ။
  8. တင်းကျပ်သော JSON လိုအပ်လျှင် မှတ်ချက်များကို ဖယ်ပါ။

ပုံမှန် ပြင်ဆင်မှုများ၏ အမြန်မြေပုံ:

ပြဿနာ ပြင်ဆင်မှု
နောက်ဆုံးကော်မာနောက်ဆုံးအကြောင်းအရာနောက် ကော်မာကို ဖျက်ပါ။
တစ်ခုတည်းကိုးကားအမည်နှင့် စာကြောင်းများအတွက် နှစ်ထပ်ကိုးကား သုံးပါ။
ကိုးကားမဲ့သော့ဂုဏ်သတ္တိအမည်ကို နှစ်ထပ်ကိုးကားဖြင့် ထုပ်ပါ။
ပျောက်ကော်မာဂုဏ်သတ္တိများ သို့မဟုတ် အခင်းအကျင်း အကြောင်းအရာများကြား ကော်မာ ထည့်ပါ။
ပျောက်ကွင်းစုံတွဲ { } နှင့် [ ] တိုင်းကို ပိတ်ပါ။
မမှန်သော escapeတရားဝင် escape သုံးပါ၊ သို့မဟုတ် လမ်းကြောင်းများတွင် နောက်သို့စောင်းသော မျဉ်းများကို နှစ်ဆလုပ်ပါ။
မှတ်ချက်စံ JSON အတွက် // နှင့် /* */ ကို ဖယ်ပါ။

ဘရောက်ဇာတွင် JSON စစ်ဆေးပြီး ပုံစံချပါ

NEXNARA JSON စနစ်တကျ / Diff သည် ဤစက်တွင် JSON စစ်ဆေးနိုင်သည်။

စစ်ဆေးနိုင်သည်၊ နေရာ ၂၊ နေရာ ၄ သို့မဟုတ် တက်ဘ်ဖြင့် လှပစေနိုင်သည်၊ 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 မဟုတ်။