O método JSON.parse() analisa uma string JSON, construindo o valor ou um objeto JavaScript descrito pela string. Uma função reviver opcional pode ser fornecida para executar uma transformação no objeto resultante antes de ser retornada.

Sintaxe

JSON.parse(text[, reviver])

Parâmetros

text
A string para analisar como JSON. Veja o objeto JSON para uma descrição da sintaxe JSON.
reviver Optional
Se for uma função, isso prescreve como o valor originalmente produzido pela análise é transformado antes de ser retornado.

Valor retornado

O Object correspondente ao text JSON fornecido.

Exceções

Lança uma exceção SyntaxError se a string a ser analisada não for um JSON válido.

Exemplos

Usando JSON.parse()

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

Usando o parâmetro reviver

Se um reviver for especificado, o valor calculado pela análise será transformado antes de ser retornado. Especificamente, o valor computado e todas as suas propriedades (começando com as propriedades mais aninhadas e prosseguindo para o próprio valor original) são executadas individualmente através do reviver. Em seguida, ele é chamado, com o objeto contendo a propriedade sendo processada como this, e com o nome da propriedade como uma string, e o valor da propriedade como argumentos. Se a função  reviver retornar undefined (ou não retornar nenhum valor, por exemplo, se a execução cair no final da função), a propriedade será excluída do objeto. Caso contrário, a propriedade é redefinida para ser o valor de retorno.

Se o reviver apenas transformar alguns valores e não outros, certifique-se de retornar todos os valores não transformados como estão, caso contrário, eles serão excluídos do objeto resultante.

JSON.parse('{"p": 5}', (key, value) =>
  typeof value === 'number'
    ? value * 2 // retorna o valor * 2 para números
    : value     // retorna tudo sem alteração
);

// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key); // mostra o nome da propriedade atual, o último é "".
  return value;     // retorna o valor da propriedade inalterada.
});

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

JSON.parse() não é permitido vírgulas à direta

// ambos retornarão um SyntaxError
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');

Especificações

Especificações Status Comentário
ECMAScript 5.1 (ECMA-262)
The definition of 'JSON.parse' in that specification.
Padrão Initial definition. Implemented in JavaScript 1.7.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'JSON.parse' in that specification.
Padrão  
ECMAScript Latest Draft (ECMA-262)
The definition of 'JSON.parse' in that specification.
Rascunho  

Compatibilidade dos navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
parseChrome Full support YesEdge Full support 12Firefox Full support 3.5IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Veja Também

Etiquetas do documento e colaboradores

Etiquetas: 
Última atualização por: mdnwebdocs-bot,