Tech Help

JSON akats ohikoak: amaierako koma, komatxoak eta Unexpected token

Konpondu JSON baliogabea: amaierako koma, komatxo bakunak, komatxorik gabeko gakoak eta Unexpected token. Zergatik huts egiten duen JSON.parse-ek eta nola balioztatu JSON.

Erantzun laburra

JSON akats gehienak arau zorrotzetatik datoz: amaierako koma, komatxo bakunak, komatxorik gabeko propietate-izenak, falta den koma, parentesi desegokiak, escape baliogabea edo iruzkinak.

JSON JavaScript objektu baten antzekoa da, baina zorrotzagoa. Propietate-izenek eta kateek komatxo bikoitzak behar dituzte.

Unexpected token ikusten baduzu, jakinarazitako karakterea analisiak gelditu den lekua izan daiteke—ez nahitaez jatorrizko akatsa hasi zen lekua.

Zure JSON baliogabe gisa markatu da. Normalean sintaxi arazo txikia da, ez fitxategi-formatu hautsia. Beheko zazpi akatsek Unexpected token gehienak eragiten dituzte.

Zergatik hausten da JSON hain erraz?

JSON sintaxi zorrotzeko datu-formatua da. JavaScript objektu-literala antzekoa izan daiteke eta hala ere JSON baliogabea. JSON estandarrean, propietate-izenek eta kateek komatxo bikoitzak behar dituzte, amaierako koma ez da onartzen, eta iruzkinak ez dira formatuaren parte.

1. Amaierako komak

Azken propietatearen ondoko koma gehigarria da arazoa. JSON estandarrak ez du onartzen.

Baliogabea

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

Baliozkoa

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

Arau bera array-ei dagokie. Kendu koma azken elementuaren ondoren.

Baliogabea

[
  "red",
  "green",
]

Baliozkoa

[
  "red",
  "green"
]

2. Komatxo bakunak bikoitzen ordez

JavaScript-ek maiz onartzen ditu komatxo bakunak. JSON-ek ez. Propietate-izenek eta kate-balioek komatxo bikoitzak erabili behar dituzte.

Baliogabea

{
  'name': 'Alex'
}

Baliozkoa

{
  "name": "Alex"
}

3. Komatxorik gabeko propietate-izenak

JavaScript-en batzuetan name komatxorik gabe idatz daiteke. JSON-en propietate-izen bakoitza komatxo bikoitzeko katea izan behar da.

Baliogabea

{
  name: "Alex",
  age: 30
}

Baliozkoa

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

4. Balioen artean falta diren komak

Propietateek eta array-elementuek koma behar dute tartean. Parser-ak Unexpected token jakinaraz dezake hurrengo komatxoan edo giltzan, falta den koman ez.

Baliogabea

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

Baliozkoa

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

5. Parentesi falta edo soberan

Objektuek { } erabiltzen dute. Array-ek [ ]. JSON habiaratuak maiz huts egiten du ] falta denean, } soberan dagoenean edo biak trukatu direnean. Zenbatu irekitze- eta ixte-bikoteak.

Baliogabea

{
  "items": [1, 2
}

Baliozkoa

{
  "items": [1, 2]
}

6. Escape sekuentzia baliogabeak

JSON katean, alderantzizko barra batek escape bat hasten du. ", \ eta \n bezalako sekuentziak baliozkoak dira. C:\Users idatzitako Windows bidea ez: \U ez da JSON escape legalik. Bikoiztu alderantzizko barrak, bestela parser-a karaktere horretan gelditzen da.

Baliogabea

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

Baliozkoa

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

7. Iruzkinak JSON barruan

JSON estandarrak ez du iruzkinik. Konfigurazio-tresna batzuek // edo /* */ onartzen dute (JSONC, JSON5 eta antzekoak). Hori ez da JSON estandarra, eta JSON.parse-ek baztertzen du.

Baliogabea

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

Zer esan nahi du Unexpected token-ek?

Parser-ak posizio horretan baimendu gabeko karaktere bat topatu du. Jakinarazitako lekua irakurketa gelditu den tokia da. Lehenago koma bat utzi baduzu, akatsak hurrengo propietatearen komatxora seinala dezake. Hitzez hitza runtime-aren arabera aldatzen da; ez espero nabigatzaile bakoitzak esaldi bera inprimatzea.

Zer esan nahi du Unexpected end of JSON input-ek?

Testua balioa osatu baino lehen amaitu da. Kausa ohikoak: } edo ] falta, sarrera moztua, gorputz hutsa edo API erantzun etena. Ez da akats bakarra.

Zergatik huts egiten du JSON.parse()-ek?

JSON.parse()-ek JSON testu baliozkoa soilik onartzen du. Honek arrakasta du:

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

Honek huts egiten du, komatxo bakunak ez direlako JSON:

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

Errore-mezu zehatza JavaScript runtime-aren araberakoa da. Hartu mezua iradokizun gisa, eta aztertu komak, komatxoak eta parentesiak posizio horren inguruan.

JSON ez da JavaScript objektu bera

JavaScript objektu-literala { name: 'Alex' } itxura izan dezake. JSON baliozkoak { "name": "Alex" } itxura izan behar du: komatxo bikoitzeko izenak eta kateak, amaierako komarik gabe, iruzkinik gabe.

  • JSON testua
  • Parser-ak tokenak irakurtzen ditu
  • Datu baliozkoak edo Unexpected token
Errore-marka analisiak gelditu den lekua da, benetako akatsaren ondoren izan daitekeena.

Nola aurkitu JSON akats bat azkar

Lan egin ordena honetan. Ez hasi fitxategi osoa berridazten.

  1. Igan JSON balioztatzaile batetik.
  2. Irakurri jakinarazitako lehen errorea.
  3. Begiratu pixka bat jakinarazitako posizioaren aurretik.
  4. Egiaztatu komak, batez ere amaierakoak eta falta direnak.
  5. Egiaztatu komatxoak: bikoitzak soilik.
  6. Egokitu { } eta [ ].
  7. Egiaztatu alderantzizko barra-escapeak kateetan.
  8. Kendu iruzkinak JSON zorrotza behar baduzu.

Zuzenketa ohikoen mapa azkarra:

Arazoa Zuzenketa
Amaierako komaEzabatu koma azken elementuaren ondoren.
Komatxo bakunakErabili komatxo bikoitzak izenetarako eta kateetarako.
Komatxorik gabeko gakoaBildu propietate-izena komatxo bikoitzetan.
Falta den komaJarri koma propietateen edo array-elementuen artean.
Falta den parentesiaItxi { } eta [ ] bikote bakoitza.
Escape baliogabeaErabili escape legal bat, edo bikoiztu alderantzizko barrak bideetan.
IruzkinaKendu // eta /* */ JSON estandarrerako.

Balioztatu eta formateatu JSON nabigatzailean

NEXNARA JSON formatzailea eta konparaketa-ek JSON egiazta dezake gailu honetan.

Baliozta dezakezu, 2 tarte, 4 tarte edo tabulazioarekin edertu, minify, bi dokumentu alderatu (JSON Diff) eta .json fitxategi bat ireki. Analisiak JSON.parse erabiltzen du nabigatzailean, ez eval.

5 MB baino handiagoak diren dokumentuak motel senti daitezke. 15 MB baino handiagoa den testua ez da nabigatzailean prozesatzen, orrialdea erantzunkorra izan dadin.

JSON prozesamendua bera zure nabigatzailean gertatzen da. Testua ez da NEXNARA zerbitzarira bidaltzen tresna honetarako. Iragarkiek eta guneko beste eginbideek oraindik sarea erabiltzen dute; hori prozesamendutik bereizita dago.

JSON baliogabea egiaztatu behar duzu? Ireki JSON formatzailea eta konparaketa eta itsatsi testua.

FAQ

Zergatik dio nire JSON-ek Unexpected token?

Parser-ak han baimendu gabeko karaktere bat topatu du. Benetako akatsa—askotan falta den koma edo komatxo bakuna—posizio horren aurrean egon daiteke.

Amaierako komak onartzen dira JSON-en?

Ez. JSON estandarrak ez du onartzen koma azken propietatearen edo array-elementuaren ondoren. JavaScript objektu-literalek maiz onartzen dute.

JSON-ek komatxo bakunak erabil ditzake?

Ez. Propietate-izenek eta kateek komatxo bikoitzak erabili behar dituzte.

JSON-ek iruzkinak izan ditzake?

Ez JSON estandarrean. Tresna batzuek iruzkinak dituzten JSONC edo JSON5 onartzen dituzte; JSON.parse-ek hala ere baztertzen ditu.

Zergatik huts egiten du JSON.parse()-ek?

Kateak ez da JSON baliozkoa. Kausa ohikoak amaierako koma, komatxo bakunak, komatxorik gabeko gakoak, iruzkinak edo moztutako balioa dira. Mezu zehatza runtime-aren araberakoa da.

Nola egiazta dezaket JSON baliozkoa den?

Itsatsi JSON formatzailea eta konparaketa bezalako balioztatzaile batean, edo deitu JSON.parse kontsolan. Analisiak salbuespena jaurtitzen badu, testua ez da JSON baliozkoa.