--- 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 ---
{{JSRef}}

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.

{{EmbedInteractiveExample("pages/js/json-parse.html")}}

Sintassi

JSON.parse(text[, reviver])

Parametri

text
La stringa da analizzare come JSON. Vedi l'oggetto {{jsxref("JSON")}} per una descrizione della sintassi JSON.
reviver {{optional_inline}}
Se una funzione, questo prescrive come viene trasformato il valore originariamente prodotto dall'analisi, prima di essere restituito.

Valore di ritorno

{{jsxref("Object")}} corrispondente al parametro JSON text dato.

Eccezione

Genera un errore {{jsxref("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 {{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, }');

Specifiche

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')}}  

Compatiblità con i browser

{{Compat("javascript.builtins.JSON.parse")}}

Vedi anche