Tech Help

Makosa ya kawaida ya JSON: koma ya mwisho, alama za nukuu na Unexpected token

Rekebisha JSON batili: koma ya mwisho, nukuu moja, funguo zisizo na nukuu na Unexpected token. Kwa nini JSON.parse inashindwa na jinsi ya kuthibitisha JSON.

Jibu la haraka

Makosa mengi ya JSON yanatokana na sheria kali: koma ya mwisho, nukuu moja, majina ya sifa bila nukuu, koma inayokosekana, mabano yasiyolingana, escape batili au maoni.

JSON inaonekana kama kitu cha JavaScript, lakini ni kali zaidi. Majina ya sifa na mistari yanahitaji nukuu mbili.

Ukiona Unexpected token, herufi iliyoripotiwa inaweza kuwa mahali uchanganuzi ulisimama—si lazima mahali kosa la asili lilipoanza.

JSON yako imewekwa alama kuwa batili. Kawaida ni tatizo dogo la sintaksia, si umbizo la faili lililovunjika. Makosa saba hapa chini husababisha Unexpected token nyingi.

Kwa nini JSON inavunjika kwa urahisi?

JSON ni umbizo la data lenye sintaksia kali. Literali ya kitu cha JavaScript inaweza kuonekana sawa na bado kuwa JSON batili. Katika JSON sanifu, majina ya sifa na mistari yanahitaji nukuu mbili, koma ya mwisho hairuhusiwi, na maoni si sehemu ya umbizo.

1. Koma za mwisho

Koma ya ziada baada ya sifa ya mwisho ndiyo tatizo. JSON sanifu hairuhusu.

Batili

{
  "name": "Alex",
  "age": 30,
}

Halali

{
  "name": "Alex",
  "age": 30
}

Kanuni ile ile inatumika kwa safu. Ondoa koma baada ya kipengee cha mwisho.

Batili

[
  "red",
  "green",
]

Halali

[
  "red",
  "green"
]

2. Nukuu moja badala ya mbili

JavaScript mara nyingi hukubali nukuu moja. JSON haikubali. Majina ya sifa na thamani za mistari lazima zitumie nukuu mbili.

Batili

{
  'name': 'Alex'
}

Halali

{
  "name": "Alex"
}

3. Majina ya sifa bila nukuu

Katika JavaScript wakati mwingine unaweza kuandika name bila nukuu. Katika JSON kila jina la sifa lazima liwe mstari wenye nukuu mbili.

Batili

{
  name: "Alex",
  age: 30
}

Halali

{
  "name": "Alex",
  "age": 30
}

4. Koma zinazokosekana kati ya thamani

Sifa na vipengee vya safu vinahitaji koma kati yao. Kichanganuzi kinaweza kuripoti Unexpected token kwenye nukuu au brace inayofuata, si kwenye koma inayokosekana.

Batili

{
  "name": "Alex"
  "age": 30
}

Halali

{
  "name": "Alex",
  "age": 30
}

5. Mabano yanayokosekana au ya ziada

Vitu hutumia { }. Safu hutumia [ ]. JSON iliyowekwa ndani mara nyingi inashindwa wakati ] inakosekana, } ni ya ziada, au zimebadilishwa. Hesabu jozi za kufungua na kufunga.

Batili

{
  "items": [1, 2
}

Halali

{
  "items": [1, 2]
}

6. Mfuatano wa escape batili

Ndani ya mstari wa JSON, mstari wa nyuma huanza escape. Mfuatano kama ", \ na \n ni halali. Njia ya Windows iliyoandikwa C:\Users si: \U si escape halali ya JSON. Rudufisha mistari ya nyuma, vinginevyo kichanganuzi kinasimama kwenye herufi hiyo.

Batili

{"file":"C:\Users\Alex"}

Halali

{"file":"C:\\Users\\Alex"}

7. Maoni ndani ya JSON

JSON sanifu haina maoni. Baadhi ya zana za usanidi hukubali // au /* */ (JSONC, JSON5 na kama hizo). Hiyo si JSON sanifu, na JSON.parse itakataa.

Batili

{
  // user name
  "name": "Alex"
}

Unexpected token inamaanisha nini?

Kichanganuzi kilikutana na herufi isiyoruhusiwa katika nafasi hiyo. Sehemu iliyoripotiwa ni mahali usomaji ulisimama. Ukiwa umeacha koma mapema, kosa linaweza kuelekeza nukuu ya sifa inayofuata. Maneno hutofautiana kulingana na mazingira ya utekelezaji; usitarajie kila kivinjari kuchapisha sentensi ile ile.

Unexpected end of JSON input inamaanisha nini?

Maandishi yaliisha kabla thamani haijakamilika. Sababu za kawaida: } au ] inakosekana, ingizo lililokatwa, mwili tupu, au jibu la API lililokatika. Si kosa moja pekee.

Kwa nini JSON.parse() inashindwa?

JSON.parse() inakubali tu maandishi ya JSON halali. Hii inafanikiwa:

const text = '{"name":"Alex"}';
const data = JSON.parse(text);

Hii inashindwa, kwa sababu nukuu moja si JSON:

const text = "{'name':'Alex'}";
JSON.parse(text);

Ujumbe kamili wa kosa unategemea mazingira ya utekelezaji ya JavaScript. Chukulia ujumbe kama kidokezo, kisha kagua koma, nukuu na mabano karibu na nafasi hiyo.

JSON si sawa na kitu cha JavaScript

Literali ya kitu cha JavaScript inaweza kuonekana kama { name: 'Alex' }. JSON halali lazima ionekane kama { "name": "Alex" }: majina na mistari yenye nukuu mbili, bila koma ya mwisho, bila maoni.

  • Maandishi ya JSON
  • Kichanganuzi kinasoma tokeni
  • Data halali au Unexpected token
Alama ya kosa ni mahali uchanganuzi ulisimama, ambayo inaweza kuwa baada ya kosa halisi.

Jinsi ya kupata kosa la JSON haraka

Fanya kwa mpangilio huu. Usianze kwa kuandika upya faili nzima.

  1. Pitisha JSON kwenye kithibitishaji.
  2. Soma kosa la kwanza lililoripotiwa.
  3. Angalia kidogo kabla ya nafasi iliyoripotiwa.
  4. Kagua koma, hasa za mwisho na zinazokosekana.
  5. Kagua nukuu: mbili tu.
  6. Linganisha { } na [ ].
  7. Kagua escape za mstari wa nyuma katika mistari.
  8. Ondoa maoni ukihitaji JSON kali.

Ramani ya haraka ya marekebisho ya kawaida:

Tatizo Marekebisho
Koma ya mwishoFuta koma baada ya kipengee cha mwisho.
Nukuu mojaTumia nukuu mbili kwa majina na mistari.
Ufunguo bila nukuuFunga jina la sifa kwa nukuu mbili.
Koma inayokosekanaWeka koma kati ya sifa au vipengee vya safu.
Bano linalokosekanaFunga kila jozi { } na [ ].
Escape batiliTumia escape halali, au rudufisha mistari ya nyuma katika njia.
MaoniOndoa // na /* */ kwa JSON sanifu.

Thibitisha na umbiza JSON katika kivinjari

NEXNARA Panga na linganisha JSON inaweza kukagua JSON kwenye kifaa hiki.

Unaweza kuthibitisha, kupamba kwa nafasi 2, nafasi 4 au kichupo, minify, kulinganisha hati mbili (JSON Diff), na kufungua faili .json. Uchanganuzi hutumia JSON.parse katika kivinjari, si eval.

Hati kubwa kuliko 5 MB zinaweza kuhisi polepole. Maandishi makubwa kuliko 15 MB hayachakatwi katika kivinjari, ili ukurasa ubaki mwitikio.

Uchakataji wa JSON wenyewe hutokea katika kivinjari chako. Maandishi hayatumiwi kwa seva ya NEXNARA kwa zana hii. Matangazo na vipengele vingine vya tovuti bado vinatumia mtandao; hiyo ni tofauti na uchakataji.

Unahitaji kukagua JSON batili? Fungua Panga na linganisha JSON na ubandike maandishi.

FAQ

Kwa nini JSON yangu inasema Unexpected token?

Kichanganuzi kilikutana na herufi isiyoruhusiwa pale. Kosa halisi—mara nyingi koma inayokosekana au nukuu moja—linaweza kukaa kabla ya nafasi hiyo.

Je, koma za mwisho zinaruhusiwa katika JSON?

Hapana. JSON sanifu hairuhusu koma baada ya sifa au kipengee cha mwisho cha safu. Literali za vitu vya JavaScript mara nyingi huruhusu.

Je, JSON inaweza kutumia nukuu moja?

Hapana. Majina ya sifa na mistari lazima yatumie nukuu mbili.

Je, JSON inaweza kuwa na maoni?

Si katika JSON sanifu. Baadhi ya zana hukubali JSONC au JSON5 yenye maoni; JSON.parse bado inakataa.

Kwa nini JSON.parse() inashindwa?

Mstari si JSON halali. Sababu za kawaida ni koma ya mwisho, nukuu moja, funguo zisizo na nukuu, maoni, au thamani iliyokatwa. Ujumbe kamili unategemea mazingira ya utekelezaji.

Ninawezaje kukagua kama JSON ni halali?

Bandika katika kithibitishaji kama Panga na linganisha JSON, au ita JSON.parse katika koni. Ikiwa uchanganuzi unatupa, maandishi si JSON halali.