--- title: JSON.parse() slug: Web/JavaScript/Reference/Global_Objects/JSON/parse tags: - ECMAScript5 - JSON - JavaScript - Riferimento - metodo translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse ---
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.
JSON.parse(text[, reviver])
text
reviver
{{optional_inline}}{{jsxref("Object")}} corrispondente al parametro JSON text
dato.
Genera un errore {{jsxref("SyntaxError")}} se la stringa da analizzare non è JSON valida.
JSON.parse()
JSON.parse('{}'); // {} JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null
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 {{jsxref("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, }');
Specifica | Stato | Commento |
---|---|---|
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}} | {{Spec2('ES5.1')}} | Definizione iniziale. Implementato in JavaScript 1.7. |
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.JSON.parse")}}