JSON .parse()
Um uso comum do JSON é trocar dados de/para um servidor web.
Ao receber dados de um servidor web, os dados são sempre uma string.
Analise os dados com JSON.parse()
e os dados se tornam um objeto JavaScript.
Exemplo - Analisando JSON
Imagine que recebemos este texto de um servidor web:
'{"name":"John", "age":30, "city":"New York"}'
Use a função JavaScript JSON.parse()
para converter texto em um objeto JavaScript:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
Certifique-se de que o texto esteja no formato JSON, caso contrário você receberá um erro de sintaxe.
Use o objeto JavaScript em sua página:
Exemplo
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Matriz como JSON
Ao usar o JSON.parse()
em um JSON derivado de uma matriz, o método retornará uma matriz JavaScript, em vez de um objeto JavaScript.
Exemplo
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Exceções
Datas de análise
Objetos de data não são permitidos em JSON.
Se você precisar incluir uma data, escreva-a como uma string.
Você pode convertê-lo novamente em um objeto de data mais tarde:
Exemplo
Converter uma string em uma data:
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Ou, você pode usar o segundo parâmetro, da JSON.parse()
função, chamado reviver .
O parâmetro reviver é uma função que verifica cada propriedade, antes de retornar o valor.
Exemplo
Converta uma string em uma data, usando a função reviver :
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if
(key == "birth") {
return new
Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Funções de análise
Funções não são permitidas em JSON.
Se você precisar incluir uma função, escreva-a como uma string.
Você pode convertê-lo novamente em uma função mais tarde:
Exemplo
Converta uma string em uma função:
const text =
'{"name":"John", "age":"function () {return
30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +
obj.age();
Você deve evitar usar funções em JSON, as funções perderão seu escopo e você teria que usá eval()
-las para convertê-las novamente em funções.