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.
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.
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 (ECMA-262) The definition of 'JSON.parse' in that specification. |
Padrão em tempo real |
Compatibilidade dos navegadores
BCD tables only load in the browser