We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Questa traduzione è incompleta. Collabora alla traduzione di questo articolo dall’originale in lingua inglese.

Il metodo JSON.parse() parserizza una stringa JSON, opzionalmente trasforma il valore ottenuto dal parsing.

Sintassi

JSON.parse(text[, reviver])

Parametri

text
La stringa da parsificare scritta in JSON. Si veda l'oggetto JSON per una descrizione dettagliata della sintassi JSON.
reviver Optional
funzione di condizionamento, definisce come il valore prodotto all'origine dal parser debba essere trasformato, prima di essere restituito.

Parametro restituito

Restituisce l'oggetto Object corrispondente al testo JSON dato in input.

Gestione Errori

Attraverso un eccezione di tipo SyntaxError se la stringa da parsificare non è valida secondo JSON.

Esempi

Uso di JSON.parse()

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null

Uso del parametro reviver

Se è specificato un reviver, il valore calcolato dal parsing è trasformato prima di essere restituito. Specificamente, il valore calcolato e tutte le sue proprietà (inzialmente con le proprietà più nidificate e procedendo ai suoi valori originari) sono eseguite individualmente attraverso il reviver, che è invocato con l'oggetto contenente l'attributo in fase di elaborazione con this, e con una stringa come nome dell'attributo, e con gli argomenti come i suoi valori. Se la funzione reviver restituisce undefined (o non restituisce alcun valore, e.g. se l'esecuzione fallisce alla fine della funzione), l'attributo è cancellato dall'oggetto. Altrimenti, l'attributo è ridefinito come il valore di ritorno.

Se il reviver transforma solo alcuni valori e non altri, bisogna assicurarsi di restituire tutti valori non transformati così come sono, altrimenti essi verranno eliminati dall'oggetto risultante.

JSON.parse('{"p": 5}', function(k, v) {
  if (k === '') { return v; } // se è il valore più alto, resituiscilo
  return v * 2;               // altrimenti restituisci v * 2.
});                           // { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) {
  console.log(k); // registra l'attuale nome dell'attributo, l'ultimo è stato "".
  return v;       // restituisce il valore dell'attributo non modificato.
});yields

// 1
// 2
// 4
// 6
// 5
// 3 
// ""

JSON.parse() non permette virgole finali

// entrambi lanceranno un SyntaxError
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse("{ \"foo\" : 1, }");

Specifications

Specifica Stato Commento
ECMAScript 5.1 (ECMA-262)
The definition of 'JSON.parse' in that specification.
Standard Initial definition. Implemented in JavaScript 1.7.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'JSON.parse' in that specification.
Standard  

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Caratteristica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Supporto di base (Yes) 3.5 (1.9.1) 8.0 10.5 4.0
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Supporto di base (Yes) (Yes) 1.0 (1.0) (Yes) (Yes) (Yes)

Note di specifiche Geck

A partire da Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26), una stringa JSON malformata rilascia un messaggio di errore più dettagliato contenendo il numero di linea e di colonna che ha causato quell'errore di parsing. Questo è utile quando si fa debug di dati JSON.

JSON.parse('[1, 2, 3, 4]');
// SyntaxError: JSON.parse: unexpected character at
// line 1 column 10 of the JSON data

See also

Tag del documento e collaboratori

Hanno collaborato alla realizzazione di questa pagina: bombur51, giacar, lanzoninicola, lonejack
Ultima modifica di: bombur51,