📋
← Torna alle guide

Errori di Sintassi JSON Comuni e Come Risolverli con un Validatore

· Tag: json, json-errors, json-validation, json-syntax, debugging, developer-tips

Errori JSON comuni

Le regole di sintassi rigide del JSON fanno sì che anche un singolo carattere fuori posto possa rompere un intero documento. Comprendere gli errori JSON più comuni ti aiuterà a eseguire il debug più velocemente e a evitare di ripetere gli stessi errori. Di seguito sono riportati i problemi più frequenti che gli sviluppatori incontrano, con spiegazioni chiare e correzioni per ciascuno.

1. Virgole finali

Errore: Unexpected token alla fine di un oggetto o di un array

Le virgole finali sono consentite negli oggetti e negli array di JavaScript ma sono severamente vietate in JSON.

JSON non valido:

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

Correzione: Rimuovi la virgola dopo l'ultimo elemento.

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

Array con virgole finali:

// Invalid
[1, 2, 3,]

// Valid
[1, 2, 3]

2. Virgolette mancanti o errate attorno alle chiavi

Errore: Unexpected identifier o Expected double-quoted property name

JSON richiede che tutte le chiavi degli oggetti siano racchiuse tra virgolette doppie. Le virgolette singole e le chiavi senza virgolette non sono valide, anche se funzionano in JavaScript.

JSON non valido:

{
  name: "Alice",
  'occupation': "Engineer"
}

Correzione: Racchiudi sempre le chiavi tra virgolette doppie.

{
  "name": "Alice",
  "occupation": "Engineer"
}

3. Uso delle virgolette singole per i valori stringa

Errore: Unexpected identifier o Unterminated string

Proprio come le chiavi, anche i valori stringa devono usare le virgolette doppie in JSON. Le virgolette singole non sono valide.

JSON non valido:

{ "greeting": 'Hello, world!' }

Correzione: Sostituisci le virgolette singole con le virgolette doppie.

{ "greeting": "Hello, world!" }

Suggerimento: Se la tua stringa contiene virgolette doppie, escapale con un backslash: "He said, \"Hello\"".

4. Caratteri speciali non escapati

Errore: Unexpected token o Invalid character

Alcuni caratteri devono essere escapati nelle stringhe JSON: virgolette doppie ("), backslash (\) e caratteri di controllo.

JSON non valido:

{
  "path": "C:\Users\Documents\file.json",
  "quote": "He said "hello""
}

Correzione: Escapa correttamente i backslash e le virgolette doppie.

{
  "path": "C:\\Users\\Documents\\file.json",
  "quote": "He said \"hello\""
}

Elenco completo delle sequenze di escape JSON

| Sequenza | Rappresenta | |----------|-----------| | \" | Virgoletta doppia | | \\ | Backslash | | \/ | Barra obliqua (slash) | | \b | Backspace | | \f | Avanzamento carta (form feed) | | \n | Nuova riga (newline) | | \r | Ritorno a capo (carriage return) | | \t | Tabulazione | | \uXXXX | Carattere Unicode (ad es., é per e) |

5. Formati numerici non validi

Errore: Unexpected number o Invalid number

JSON ha regole specifiche su come i numeri possono essere formattati:

  • Gli zeri iniziali non sono consentiti (01 non è valido)
  • Un singolo zero iniziale è consentito solo per il numero 0
  • I numeri non possono avere punti finali (10. non è valido)
  • I formati esadecimali, ottali e binari non sono supportati

JSON non valido:

{
  "invalid1": 01,
  "invalid2": 10.,
  "invalid3": 0xFF,
  "invalid4": 1,000
}

Correzione:

{
  "valid1": 1,
  "valid2": 10.0,
  "valid3": 255,
  "valid4": 1000
}

6. Valori non validi: undefined, NaN, Infinity

Errore: Unexpected token per undefined, NaN, Infinity

JavaScript ha valori che non hanno un equivalente JSON. Questi causeranno errori di parsing:

JSON non valido:

{
  "undefinedVal": undefined,
  "notANumber": NaN,
  "infinity": Infinity
}

Correzione: Sostituiscili con valori JSON validi o usa una convenzione.

{
  "undefinedVal": null,
  "notANumber": null,
  "infinity": 1.7976931348623157e+308
}

7. Virgole extra o mancanti

Errore: Expected comma o Unexpected token

In JSON le virgole devono separare ogni coppia chiave/valore e ogni elemento dell'array, ma non devono comparire dopo l'ultimo elemento.

Virgola mancante (non valido):

{
  "name": "Alice"
  "age": 30
}

Correzione: Aggiungi la virgola mancante.

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

8. Problemi di struttura profondamente annidata

Errore: Maximum call stack size exceeded o timeout del parser

Sebbene non sia un errore di sintassi, il JSON profondamente annidato (10+ livelli) può causare problemi di prestazioni e rendere il debug estremamente difficile.

Struttura problematica:

{
  "level1": {
    "level2": {
      "level3": {
        "level4": {
          "level5": {
            "level6": {
              "value": "too deep"
            }
          }
        }
      }
    }
  }
}

Approccio migliore: Appiattisci la struttura o usa i riferimenti.

{
  "users": {
    "alice": { "role": "admin" }
  },
  "permissions": {
    "admin": ["read", "write", "delete"]
  }
}

9. Parentesi graffe di apertura o chiusura mancanti

Errore: Expected ',' or '}' o Unexpected end of JSON input

Le parentesi graffe e quadre non corrispondenti sono una fonte comune di errori JSON, soprattutto nei file JSON grandi o scritti a mano.

JSON non valido:

{
  "name": "Alice",
  "items": [1, 2, 3
}

Correzione: Assicurati che ogni { abbia una } corrispondente e ogni [ abbia una ] corrispondente.

{
  "name": "Alice",
  "items": [1, 2, 3]
}

Consiglio da professionista: Indenta correttamente il tuo JSON per abbinare visivamente le parentesi di apertura e chiusura. Un formattatore JSON può farlo automaticamente.

Come eseguire il debug degli errori JSON in modo efficace

  1. Usa un validatore JSON -- Incolla il tuo JSON in un validatore JSON gratuito per ottenere la riga e la colonna esatte del primo errore.
  2. Valida in modo incrementale -- Per file di grandi dimensioni, valida una sezione alla volta per isolare l'errore.
  3. Fai attenzione agli artefatti di copia-incolla -- Caratteri invisibili, virgolette intelligenti e spazi unificatori spesso si insinuano dai word processor o dalle pagine web.
  4. Controlla la codifica dei caratteri -- Assicurati che il file sia salvato in UTF-8. Altre codifiche possono produrre errori invisibili.
  5. Usa un linter -- Strumenti come ESLint con il plugin json intercettano gli errori JSON durante lo sviluppo.

Ricorda: i parser JSON in genere segnalano solo il primo errore di sintassi. Correggi quello, rivalida e ripeti finché il documento non passa. Il nostro strumento Formattatore & Validatore JSON ti fornisce messaggi di errore istantanei e dettagliati per accelerare questo processo.