Il metodo JSON.parse()
analizza una stringa JSON, costruendo il valore JavaScript o l'oggetto descritto dalla stringa. È possibile fornire una funzione reviver opzionale per eseguire una trasformazione sull'oggetto risultante prima che venga restituito.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Sintassi
JSON.parse(text[, reviver])
Parametri
text
- La stringa da analizzare come JSON. Vedi l'oggetto
JSON
per una descrizione della sintassi JSON. reviver
Optional- Se una funzione, questo prescrive come viene trasformato il valore originariamente prodotto dall'analisi, prima di essere restituito.
Valore di ritorno
Object
corrispondente al parametro JSON text
dato.
Eccezione
Genera un errore SyntaxError
se la stringa da analizzare non è JSON valida.
Esempi
Utilizzare JSON.parse()
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
Usare il parametro reviver
Se viene specificato un reviver
, il valore calcolato dall'analisi viene trasformato prima di essere restituito. In particolare, il valore calcolato e tutte le sue proprietà (che iniziano con le proprietà più nidificate e procedono al valore originale stesso) vengono eseguite individualmente attraverso il reviver
. Quindi viene chiamato, con l'oggetto contenente la proprietà da elaborare come this
, e con il nome della proprietà come stringa e il valore della proprietà come argomenti. Se la funzione reviver
restituisce undefined
(o non restituisce alcun valore, ad esempio, se l'esecuzione cade al termine della funzione), la proprietà viene cancellata dall'oggetto. In caso contrario, la proprietà viene ridefinita come il valore restituito.
Se reviver
trasforma solo alcuni valori e non altri, sii certo di restituire tutti i valori non trasformati così come sono, altrimenti verranno eliminati dall'oggetto risultante.
JSON.parse('{"p": 5}', (key, value) =>
typeof value === 'number'
? value * 2 // ritorna: value * 2 per i numeri
: value // restituisce tutto il resto invariato
);
// { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
console.log(key); // registra il nome della proprietà corrente, l'ultimo è "".
return value; // restituisce il valore della proprietà invariato.
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
JSON.parse()
non consente virgole finali
// both will throw a SyntaxError
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
Specifiche
Specifica | Stato | Commento |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'JSON.parse' in that specification. |
Standard | Definizione iniziale. Implementato in JavaScript 1.7. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'JSON.parse' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'JSON.parse' in that specification. |
Living Standard |
Compatiblità con i browser
BCD tables only load in the browser