Um uso comum do JSON é trocar dados de/para um servidor web.
Ao enviar dados para um servidor web, os dados devem ser uma linha.
Converta um objeto JavaScript em uma string com JSON.stringify()
.
Imagine que temos este objeto em JavaScript:
const obj = {name: "John", age: 30, city: "New York"};
Use a função JavaScript JSON.stringify()
para convertê-lo em uma string.
const myJSON = JSON.stringify(obj);
O resultado será uma string seguindo a notação JSON.
myJSON
agora é uma string e está pronta para ser enviada a um servidor:
const obj = {name: "John", age: 30, city: "New York"};
const myJSON =
JSON.stringify(obj);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Create a JSON string from a JavaScript object.</h2>
<p id="demo"></p>
<script>
const obj = {name: "John", age: 30, city: "New York"};
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Você aprenderá como enviar JSON para um servidor nos próximos capítulos.
Também é possível restringir arrays JavaScript:
Imagine que temos este array em JavaScript:
const arr = ["John", "Peter", "Sally", "Jane"];
Use a função JavaScript JSON.stringify()
para convertê-lo em uma string.
const myJSON = JSON.stringify(arr);
O resultado será uma string seguindo a notação JSON.
myJSON
agora é uma string e está pronta para ser enviada a um servidor:
const arr = ["John", "Peter", "Sally", "Jane"];
const myJSON =
JSON.stringify(arr);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Create a JSON string from a JavaScript array.</h2>
<p id="demo"></p>
<script>
const arr = ["John", "Peter", "Sally", "Jane"];
const myJSON = JSON.stringify(arr);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Você aprenderá como enviar uma string JSON para um servidor nos próximos capítulos.
Ao armazenar dados, os dados devem ter um determinado formato e, independentemente de onde você escolher armazená-los, texto é sempre um dos formatos legais.
JSON torna possível armazenar objetos JavaScript como texto.
Armazenando dados no armazenamento local
// Storing data:
const myObj = {name: "John",
age: 31, city: "New York"};
const myJSON =
JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);
// Retrieving data:
let text = localStorage.getItem("testJSON");
let obj =
JSON.parse(text);
document.getElementById("demo").innerHTML = obj.name;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Store and retrieve data from local storage.</h2>
<p id="demo"></p>
<script>
// Storing data:
const myObj = { name: "John", age: 31, city: "New York" };
const myJSON = JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);
// Retrieving data:
let text = localStorage.getItem("testJSON");
let obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.name;
</script>
</body>
</html>
Em JSON, objetos de data não são permitidos. A função JSON.stringify()
irá converter quaisquer datas em strings.
const obj = {name: "John", today: new Date(), city : "New York"};
const myJSON = JSON.stringify(obj);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JSON.stringify() converts date objects into strings.</h2>
<p id="demo"></p>
<script>
const obj = {name: "John", today: new Date(), city: "New York"};
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Você pode converter a string novamente em um objeto de data no receptor.
Em JSON, funções não são permitidas como valores de objetos.
A função JSON.stringify()
removerá quaisquer funções de um JavaScript objeto, tanto a chave quanto o valor:
const obj = {name: "John", age: function () {return 30;}, city: "New York"};
const myJSON = JSON.stringify(obj);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JSON.stringify() will remove any functions from an object.</h2>
<p id="demo"></p>
<script>
const obj = {name: "John", age: function () {return 30;}, city: "New York"};
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Isto pode ser omitido se você converter suas funções em strings antes de executar a função JSON.stringify()
.
const obj = {name: "John", age: function () {return 30;}, city: "New York"};
obj.age = obj.age.toString();
const myJSON = JSON.stringify(obj);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JSON.stringify() will remove any functions from an object.</h2>
<p>Convert functions into strings to keep them in the JSON object.</p>
<p id="demo"></p>
<script>
const obj = {name: "John", age: function () {return 30;}, city: "New York"};
obj.age = obj.age.toString();
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Se você enviar funções usando JSON, as funções perderão seu escopo e o receptor teria que usar eval() para convertê-los novamente em funções.