DEV Community

Cover image for O que é JSON (Javasript Object Notation) e como usamos ?
Henrique Leme de Brito
Henrique Leme de Brito

Posted on

O que é JSON (Javasript Object Notation) e como usamos ?

É bastante comum pra galera que ta começando na programação ficar um pouco perdido com muitos acronismos nas primeiras semanas. Hoje, vamos dar uma passada sobre algo que é muito comum no dia a dia da nossa profissão e que é bem fácil de pegar as manhas, pode confiar!! Neste artigo, vamos explicar o que significa a sigla JSON, como pode ser usado, como é a estrutura dele e muito mais! Bora lá?

Índice

O que é JSON afinal?

O JSON ou "JavaScript Object Notation" é um formato básico para transportar dados, criado em 2000. Mas ao ler o nome, você pode se perguntar:

"Se tem JavaScript no nome, então só posso usá-lo com JavaScript, certo?" - Você, 2024

Não exatamente, pelo fato, de ser um formato leve e simples, ele é fácil de ser lido por outras linguagens e, o mais importante, por pessoas.

"Bem, se é uma maneira leve e simples de transportar dados, então vou usá-lo como um banco de dados." - Você, 2024

Eu não recomendaria...

Por quê? Bom, embora o JSON seja ótimo para transportar dados por causa de sua simplicidade e legibilidade, usá-lo como banco de dados pode não ser a melhor ideia. Arquivos JSON não são projetados para lidar com grandes quantidades de dados de forma eficiente. Eles não possuem recursos de indexação, consulta e transações como bancos de dados SQL (como MySQL e PostgreSQL) ou bancos de dados NoSQL (como MongoDB e ScyllaDB). Usar JSON como banco de dados pode levar a problemas de desempenho, integridade de dados e desafios na gestão de acesso concorrente aos dados.

Não existia uma forma de transportar dados assim antes?

Claro que sim. A principal linguagem usada era o XML (Extensible Markup Language), projetada para ser uma linguagem de marcação flexível e personalizável. Embora seja poderosa e altamente extensível, pode ser bastante verbosa, dificultando sua legibilidade. Cada pedaço de dado no XML é cercado por tags, o que pode aumentar o tamanho do arquivo e a complexidade, especialmente em documentos maiores ou conjuntos de dados.

Qual é a diferença entre JSON e XML?

JSON e XML são ambos formatos de serialização de dados. JSON é mais conciso, o que o torna mais fácil de ler e mais rápido de analisar, sendo bem adaptado às estruturas de dados das linguagens de programação modernas. O XML, por outro lado, é mais verboso com o uso de tags explícitas de início e fim, suportando uma estrutura hierárquica mais complexa adequada para aplicações que exigem metadados detalhados. Enquanto o JSON é preferido para APIs Web devido à sua eficiência, o XML é preferido em ambientes que requerem marcação extensiva de documentos, como aplicações empresariais.

Da uma olhadinha nesse exemplo em XML para comparação:

<livraria> <livro> <titulo>Aprendendo XML</titulo> <autor>Erik T. Ray</autor> <preco>29.99</preco> </livro> <livro> <titulo>JSON para Iniciantes</titulo> <autor>iCode Academy</autor> <preco>39.95</preco> </livro> </livraria> 
Enter fullscreen mode Exit fullscreen mode

E agora temos esse mesmo exemplo, mas agora no formato JSON:

{ "livraria": { "livros": [ { "titulo": "Aprendendo XML", "autor": "Erik T. Ray", "preco": 29.99 }, { "titulo": "JSON para Iniciantes", "autor": "iCode Academy", "preco": 39.95 } ] } } 
Enter fullscreen mode Exit fullscreen mode

Ainda vale a pena usar o XML?

Bom, vai depender do seu objetivo, mas na minha opinião, sempre vale a pena dar uma olhada em alguma coisa que você não conhece, mesmo que você não pretenda usar, só para ter uma ideia do que é e como é usado. Você pode se deparar com um problema que o XML pode resolver um dia, vai saber.

Vantagens do JSON

Então, como você já viu, a principal razão para usar JSON é sua legibilidade, mas vamos listar suas principais vantagens:

  • Fácil de Ler: JSON tem uma estrutura clara e direta.
  • Fácil de Parsear: Sua sintaxe simples facilita a na hora de converter.
  • Compacto: JSON tende a ser mais leve, economizando espaço e largura de banda.
  • Universal: Amplamente suportado por várias linguagens de programação e plataformas, usado por grandes empresas como Google e Twitter.

Sintaxe JSON

A sintaxe JSON é direta e sem muito segredo, seguindo algumas regras básicas:

  1. Dados em pares de nome/valor: Cada elemento de dado em JSON é representado como um par de chave (ou nome) e valor, separados por dois pontos.
  2. Dados separados por vírgulas: Múltiplos pares de chave-valor dentro de um objeto são separados por vírgulas.
  3. Objetos são envoltos por chaves: Um objeto em JSON é cercado por chaves {}.
  4. Arrays são envoltos por colchetes: Um array em JSON é cercado por colchetes [].

Mas é mais fácil visualizar do que ler, então aqui estão alguns exemplos para você, junto com a definição de cada tipo:

Tipos de Dados JSON

JSON suporta os seguintes tipos de dados:

  • String: Uma sequência de caracteres, cercada por aspas duplas. "nome": "João Silva"
  • Número: Valores numéricos, podem ser inteiros ou de ponto flutuante. "idade": 30
  • Objeto: Uma coleção de pares chave-valor, cercados por chaves. "endereço": { "rua": "Rua Principal", "cidade": "Cidade Exemplo" }
  • Array: Uma lista ordenada de valores, cercada por colchetes. "cursos": ["Matemática", "Ciências", "História"]
  • Boolean: Valores verdadeiro ou falso. "éEstudante": false
  • Null: Representa um valor nulo. "nomeDoMeio": null

E não, você não pode escrever comentarios em arquivo um JSON :D

Exemplo prático com Carros

Vamos dizer que você quer manter registros de carros e seus detalhes. Aqui está um exemplo de como esses registros podem ser organizados em JSON:

{ "carros": [ { "marca": "Toyota", "modelo": "Corolla", "ano": 2020, "características": { "cor": "Azul", "transmissão": "Automática" } }, { "marca": "Toyota", "modelo": "Corolla", "ano": 2021, "características": { "cor": "Vermelha", "transmissão": "Automática" } } ] } 
Enter fullscreen mode Exit fullscreen mode

Se você quiser adicionar mais carros, basta adicionar mais objetos ao array de carros na estrutura JSON.

E isso pode ser facilmente feito analisando o JSON em uma linguagem de sua escolha e, em seguida, manipulando-o como desejar. Aqui estão alguns exemplos usando o JSON mostrado anteriormente para dar uma ideia melhor de como ler e analisar um arquivo JSON:

Trabalhando com JSON em JavaScript

const fs = require('fs').promises const jsonPath = 'C:docs/example/example.json' const readJsonFile = async () => { // Lê o conteúdo do JSON e garante que seja lido como uma string const jsonContent = await fs.readFile(jsonPath, 'utf-8') // Converte o JSON em um objeto JavaScript const data = JSON.parse(jsonContent) console.log(data.carros[0]) // Saída: { marca: "Toyota", modelo: "Corolla", ano: 2020, características: { cor: "Azul", transmissão: "Automática" } } console.log(data.carros[1]) // Saída: { marca: "Toyota", modelo: "Corolla", ano: 2021, características: { cor: "Vermelha", transmissão: "Automática" } } } readJsonFile() 
Enter fullscreen mode Exit fullscreen mode

Trabalhando com JSON em Python

import json # Lê o arquivo JSON with open('C:docs/example/example.json', 'r') as jsonFile: # Analisa o conteúdo do JSON  jsonContent = json.load(jsonFile) print(jsonContent['carros'][0]) # Saída: {'marca': 'Toyota', 'modelo': 'Corolla', 'ano': 2020, 'características': {'cor': 'Azul', 'transmissão': 'Automática'}} print(jsonContent['carros'][1]) # Saída: {'marca': 'Toyota', 'modelo': 'Corolla', 'ano': 2021, 'características': {'cor': 'Vermelha', 'transmissão': 'Automática'}} 
Enter fullscreen mode Exit fullscreen mode

Trabalhando com JSON em PHP

<?php $jsonPath = 'C:docs/example/example.json'; // Lê o conteúdo do JSON $contents = file_get_contents($jsonPath); // Converte o conteúdo do JSON em um Objeto PHP $jsonContent = json_decode($contents); print_r($jsonContent->carros[1]); // Saída: stdClass Object  // (  // [marca] => Toyota  // [modelo] => Corolla  // [ano] => 2021  // [características] => stdClass Object  // (  // [cor] => Vermelha  // [transmissão] => Automática  // )  // ) ?> 
Enter fullscreen mode Exit fullscreen mode

Trabalhando com JSON em Java

package org.example; import org.json.JSONArray; import org.json.JSONObject; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws IOException { String jsonFilePath = "C:docs/example/example.json"; // Lê o conteúdo do arquivo e converte em uma string String jsonContent = Files.readString(Paths.get(jsonFilePath), StandardCharsets.UTF_8); // Converte o conteúdo da string em um Objeto JSON JSONObject jsonExample = new JSONObject(jsonContent); JSONArray carros = jsonExample.getJSONArray("carros"); System.out.println(carros.get(0)); // Saída: {"características": {"transmissão":"Automática","cor":"Azul"},"ano":2020,"modelo":"Corolla","marca":"Toyota"}  System.out.println(carros.get(1)); // Saída: {"características":{"transmissão":"Automática","cor":"Vermelha"},"ano":2021,"modelo":"Corolla","marca":"Toyota"}  } } 
Enter fullscreen mode Exit fullscreen mode

PS: O exemplo em Java usa uma biblioteca json. Se você for testá-lo, certifique-se de incluí-la nas suas dependências.

Conclusão

Entender JSON pode parecer complicado no começo, mas na verdade é muito simples quando você pega o jeito! Demos uma passada sobre o que é JSON, como é usado e por que é tão útil.

Desde entender sua sintaxe até vê-lo em ação em diferentes linguagens de programação, agora você está pronto para dar os primeiros passos e começar a usar JSON em seus projetos.

Se você ainda tiver alguma dúvida, sinta-se à vontade para me perguntar diretamente. Espero que tenha gostado do artigo - não se esqueça de curtir e compartilhar com aquele amigo que ainda está lutando para entender JSON.

Feedback sobre o artigo são sempre bem-vindos para que eu possa melhorar nos próximos. Obrigado por ler, mantenha-se saudável e beba água!

Top comments (4)

Collapse
 
leonardorafaeldev profile image
Leonardo Rafael Dev

Muito bom primo !

Collapse
 
phenriquesousa profile image
Pedro Henrique

Muito bom!! Obrigado por compartilhar

Collapse
 
osvaldo_josvictor_3e816 profile image
Osvaldo José Victor

Amei o contéudo!

Collapse
 
mateuxaff profile image
Mateus Ferreira Rodrigues

💜💜💜💜💜💜💜