Tech Help

Biežas JSON kļūdas: beigu komats, pēdiņas un Unexpected token

Labojiet nederīgu JSON: beigu komats, vienpēdiņas, atslēgas bez pēdiņām un Unexpected token. Kāpēc JSON.parse neizdodas un kā pārbaudīt JSON.

Ātra atbilde

Lielākā daļa JSON kļūdu nāk no stingriem noteikumiem: beigu komats, vienpēdiņas, īpašību nosaukumi bez pēdiņām, trūkstošs komats, nesaskaņotas iekavas, nederīgs escape vai komentāri.

JSON izskatās pēc JavaScript objekta, bet ir stingrāks. Īpašību nosaukumiem un virknēm vajag dubultpēdiņas.

Ja redzat Unexpected token, ziņotais rakstzīme var būt vieta, kur parsēšana apstājās—ne vienmēr sākotnējās kļūdas sākums.

Jūsu JSON ir atzīmēts kā nederīgs. Parasti tā ir maza sintakses problēma, nevis bojāts faila formāts. Zemāk septiņas kļūdas izraisa lielāko daļu Unexpected token.

Kāpēc JSON tik viegli lūst?

JSON ir datu formāts ar stingru sintaksi. JavaScript objekta literālis var izskatīties līdzīgi un tomēr būt nederīgs JSON. Standarta JSON īpašību nosaukumiem un virknēm vajag dubultpēdiņas, beigu komats nav atļauts, un komentāri nav formāta daļa.

1. Beigu komati

Papildu komats pēc pēdējās īpašības ir problēma. Standarta JSON to neatļauj.

Nederīgs

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

Derīgs

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

Tas pats noteikums attiecas uz masīviem. Noņemiet komatu pēc pēdējā elementa.

Nederīgs

[
  "red",
  "green",
]

Derīgs

[
  "red",
  "green"
]

2. Vienpēdiņas dubultpēdiņu vietā

JavaScript bieži pieņem vienpēdiņas. JSON ne. Īpašību nosaukumiem un virkņu vērtībām jāizmanto dubultpēdiņas.

Nederīgs

{
  'name': 'Alex'
}

Derīgs

{
  "name": "Alex"
}

3. Īpašību nosaukumi bez pēdiņām

JavaScript dažreiz var rakstīt name bez pēdiņām. JSON katram īpašības nosaukumam jābūt virknei ar dubultpēdiņām.

Nederīgs

{
  name: "Alex",
  age: 30
}

Derīgs

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

4. Trūkstoši komati starp vērtībām

Starp īpašībām un masīva elementiem vajag komatu. Parsētājs var ziņot Unexpected token pie nākamajām pēdiņām vai iekavas, ne pie trūkstošā komata.

Nederīgs

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

Derīgs

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

5. Trūkstošas vai liekas iekavas

Objekti izmanto { }. Masīvi izmanto [ ]. Iegultais JSON bieži neizdodas, kad trūkst ], ir lieka } vai tās ir samainītas. Saskaitiet atvēršanas un aizvēršanas pārus.

Nederīgs

{
  "items": [1, 2
}

Derīgs

{
  "items": [1, 2]
}

6. Nederīgas escape sekvences

JSON virknē pretējā slīpsvītra sāk escape. Sekvences kā ", \ un \n ir derīgas. Windows ceļš C:\Users nav: \U nav likumīgs JSON escape. Dubultojiet pretējās slīpsvītras, citādi parsētājs apstājas pie tās rakstzīmes.

Nederīgs

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

Derīgs

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

7. Komentāri JSON iekšpusē

Standarta JSON nav komentāru. Daži konfigurācijas rīki pieņem // vai /* */ (JSONC, JSON5 un līdzīgi). Tas nav standarta JSON, un JSON.parse to noraida.

Nederīgs

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

Ko nozīmē Unexpected token?

Parsētājs sastapa rakstzīmi, kas tajā pozīcijā nav atļauta. Ziņotā vieta ir tur, kur lasīšana apstājās. Ja agrāk izlaidāt komatu, kļūda var rādīt uz nākamās īpašības pēdiņām. Formulējums atšķiras pēc izpildes vides; negaidiet, ka katra pārlūkprogramma drukās to pašu teikumu.

Ko nozīmē Unexpected end of JSON input?

Teksts beidzās, pirms vērtība bija pabeigta. Tipiski cēloņi: trūkst } vai ], nogriezta ievade, tukšs ķermenis vai pārtraukta API atbilde. Tā nav viena kļūda.

Kāpēc JSON.parse() neizdodas?

JSON.parse() pieņem tikai derīgu JSON tekstu. Šis izdodas:

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

Šis neizdodas, jo vienpēdiņas nav JSON:

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

Precīzais kļūdas ziņojums ir atkarīgs no JavaScript izpildes vides. Uztveriet ziņojumu kā mājiens, tad pārbaudiet komatus, pēdiņas un iekavas pie tās pozīcijas.

JSON nav tas pats, kas JavaScript objekts

JavaScript objekta literālis var izskatīties kā { name: 'Alex' }. Derīgam JSON jāizskatās kā { "name": "Alex" }: nosaukumi un virknes ar dubultpēdiņām, bez beigu komata, bez komentāriem.

  • JSON teksts
  • Parsētājs lasa žetonus
  • Derīgi dati vai Unexpected token
Kļūdas zīme ir tur, kur parsēšana apstājās, kas var būt pēc īstās kļūdas.

Kā ātri atrast JSON kļūdu

Strādājiet šādā secībā. Nesāciet, pārrakstot visu failu.

  1. Palaidiet JSON caur pārbaudītāju.
  2. Izlasiet pirmo ziņoto kļūdu.
  3. Skatieties nedaudz pirms ziņotās pozīcijas.
  4. Pārbaudiet komatus, īpaši beigu un trūkstošos.
  5. Pārbaudiet pēdiņas: tikai dubultās.
  6. Saskaņojiet { } un [ ].
  7. Pārbaudiet pretējās slīpsvītras escape virknēs.
  8. Noņemiet komentārus, ja vajag stingru JSON.

Ātra parastu labojumu karte:

Problēma Labojums
Beigu komatsDzēsiet komatu pēc pēdējā elementa.
VienpēdiņasIzmantojiet dubultpēdiņas nosaukumiem un virknēm.
Atslēga bez pēdiņāmIetiniet īpašības nosaukumu dubultpēdiņās.
Trūkstošs komatsIelieciet komatu starp īpašībām vai masīva elementiem.
Trūkstoša iekavaAizveriet katru { } un [ ] pāri.
Nederīgs escapeIzmantojiet likumīgu escape vai dubultojiet pretējās slīpsvītras ceļos.
KomentārsNoņemiet // un /* */ standarta JSON.

Pārbaudiet un formatējiet JSON pārlūkprogrammā

NEXNARA JSON formatēšana un salīdzināšana var pārbaudīt JSON šajā ierīcē.

Varat pārbaudīt, izskaistināt ar 2 atstarpēm, 4 atstarpēm vai tabulāciju, minify, salīdzināt divus dokumentus (JSON Diff) un atvērt .json failu. Parsēšana izmanto JSON.parse pārlūkprogrammā, ne eval.

Dokumenti lielāki par 5 MB var šķist lēni. Teksts lielāks par 15 MB pārlūkprogrammā netiek apstrādāts, lai lapa paliktu atsaucīga.

Pati JSON apstrāde notiek jūsu pārlūkprogrammā. Teksts šim rīkam netiek sūtīts uz NEXNARA serveri. Reklāmas un citas vietnes funkcijas joprojām izmanto tīklu; tas ir atsevišķi no apstrādes.

Jāpārbauda nederīgs JSON? Atveriet JSON formatēšana un salīdzināšana un ielīmējiet tekstu.

FAQ

Kāpēc mans JSON saka Unexpected token?

Parsētājs sastapa rakstzīmi, kas tur nav atļauta. Īstā kļūda—bieži trūkstošs komats vai vienpēdiņa—var sēdēt tieši pirms tās pozīcijas.

Vai beigu komati ir atļauti JSON?

Nē. Standarta JSON neatļauj komatu pēc pēdējās īpašības vai masīva elementa. JavaScript objekta literāļi to bieži atļauj.

Vai JSON var izmantot vienpēdiņas?

Nē. Īpašību nosaukumiem un virknēm jāizmanto dubultpēdiņas.

Vai JSON var saturēt komentārus?

Ne standarta JSON. Daži rīki pieņem JSONC vai JSON5 ar komentāriem; JSON.parse tos tomēr noraida.

Kāpēc JSON.parse() neizdodas?

Virkne nav derīgs JSON. Tipiski cēloņi ir beigu komats, vienpēdiņas, atslēgas bez pēdiņām, komentāri vai nogriezta vērtība. Precīzais ziņojums ir atkarīgs no izpildes vides.

Kā pārbaudīt, vai JSON ir derīgs?

Ielīmējiet to pārbaudītājā, piemēram JSON formatēšana un salīdzināšana, vai izsauciet JSON.parse konsolē. Ja parsēšana met kļūdu, teksts nav derīgs JSON.