Convertitore JSON in oggetto JavaScript

JSON stretto può essere convertito in un oggetto JavaScript con JSON.parse. I letterali di oggetto JavaScript richiedono una pulizia prima di diventare JSON valido.

Convertire JSON in JavaScript

Se l’input è già JSON valido, il convertitore più sicuro è JSON.parse(jsonText). Restituisce un normale oggetto, array, stringa, numero, booleano o null JavaScript senza eseguire codice.

Input JSON

{ "name": "Ada", "active": true, "skills": ["math", "notes"] }

Uso in JavaScript

const user = JSON.parse(jsonText); console.log(user.name);

Input letterale di oggetto: è diverso

Un letterale di oggetto JavaScript come { name: 'Ada', active: true } non è JSON. Prima di passarlo a JSON.parse sistema chiavi senza virgolette, converti apici singoli in doppi, rimuovi commenti e virgole finali.

Quando evitare eval

Non usare eval per trasformare testo sconosciuto in oggetto. eval esegue codice. JSON.parse parsa solo dati — è per questo che JSON strict è più sicuro per payload di API, configurazione, log ed esempi incollati.

Casi limite: date, undefined e funzioni

JSON non ha il tipo Date, undefined o funzione. Le date vanno avanti e indietro come stringhe ISO, undefined viene scartato dallo stringify e le funzioni non si possono rappresentare. Se un oggetto JavaScript contiene questi valori, il JSON risultante è una fotografia con perdita — ripristina i tipi con una funzione reviver in JSON.parse.

TypeScript e tipi inferiti

JSON.parse restituisce 'any' perché il parser non può sapere prima la forma. Per un accesso tipizzato dichiara un tipo di ritorno (JSON.parse(text) as User) dopo aver validato con una libreria di schema come zod o io-ts, oppure genera un’interfaccia da un esempio con lo strumento JSON to TypeScript.

Direzione inversa: oggetto a JSON

JSON.stringify(value, null, 2) produce JSON formattato da un valore JavaScript. Scarta silenziosamente undefined, funzioni e chiavi Symbol; i riferimenti circolari lanciano errore. Passa una funzione replacer come secondo argomento per controllare quali campi sopravvivono — utile per ripulire gli interni prima di mandare un oggetto in rete.