Cookie Consent by Free Privacy Policy Generator 📌 JSON: Uma Visão Abrangente sobre o Formato de Dados Interchange


✅ JSON: Uma Visão Abrangente sobre o Formato de Dados Interchange


💡 Newskategorie: Programmierung
🔗 Quelle: dev.to

JSON é a abreviação de "JavaScript Object Notation", caso esse seja um conceito recente para você, não se assuste com o nome grande, é na verdade bem simples de entender.

Em sua essência, JSON é um formato de dados leve, com interoperabilidade ampla e de fácil legibilidade, tanto por seres humanos quanto por máquinas.

Desde sua primeira especificação por Douglas Crockford nos anos 2000, tornou-se uma escolha popular para troca e armazenamento de dados, e vem substituindo cada vez mais o formato padrão até então, o XML.

Neste artigo, pretendo explorar os fundamentos do JSON, suas características, aplicações e algumas técnicas um pouco mais avançadas para manipulação eficiente de dados.

Uma Breve História

O objetivo por trás da criação do JSON era ser uma alternativa simples e leve ao XML para a troca de dados entre diferentes sistemas e linguagens de programação, mas especialmente para comunicação entre clientes web e servidores.

Crockford percebeu que, embora o XML fosse amplamente utilizado para representar e trocar dados estruturados, ele tinha algumas desvantagens significativas, incluindo uma sintaxe mais complexa e uma sobrecarga maior em termos de tamanho de arquivo e processamento.

Inspirado pela sintaxe de objetos literais em JavaScript, o JSON foi formalizado pela primeira vez em 2006, quando Crockford publicou a especificação oficial no site json.org.

Hoje em dia, o JSON é amplamente utilizado em uma variedade de contextos, desde comunicação entre cliente e servidor, em aplicativos web, até representação de dados em bancos de dados NoSQL e Web APIs. Então quando você acessa alguma aplicação na web é altamente provável que ela esteja fazendo uso do JSON.

Estrutura de dados com JSON

O JSON representa dados estruturados no formato de objetos com pares de chave-valor. Ele é independente de linguagem, e pode ser compreendido e manipulado nativamente por uma variedade de linguagens de programação. Como por exemplo: Ruby, Python, PHP, JavaScript…Mas mesmo para as linguagens que não aceitam o JSON nativamente, no site oficial da especificação existem inúmeras bibliotecas que fazem o parser para essas linguagens.

A estrutura de um JSON consiste principalmente em objeto {} e array []. Um JSON, deve sempre começar com abre chaves { e terminar com fecha chaves }.

Os dados são armazenados dentro do JSON por pares de “nome”: “valor” e então separados por vírgula.

exemplo simples de um objeto JSON:

{
  "nome": "João",
  "idade": 21,
  "solteiro": false,
  "amigos": ["Robson", "Jorge", "Maria"]
}

Esse conjunto de informações é chamado de objeto. O valor de um objeto JSON pode conter: string, number, boolean, array, object ou null.

Observe a propriedade amigos, que contém um array como valor, um array JSON é uma coleção ordenada de valores, onde cada valor pode ser qualquer tipo de dado, assim como o objeto JSON, incluindo outros arrays ou objetos.

Aplicações de JSON

JSON é amplamente utilizado em uma variedade de contextos, incluindo:

  • Comunicação entre cliente e servidor em aplicativos web e móveis.
  • Armazenamento de configurações e preferências de usuário.
  • Intercâmbio de dados entre sistemas distribuídos e Web APIs.
  • Representação de dados em bancos de dados NoSQL, como o MongoDB.
  • Arquivos de configuração

Concorrentes

JSON não é o único no mercado de serialização de dados, seus principais concorrentes são:

  • YAML

Segundo o website oficial: "YAML é uma serialização de dados amigável para humanos e padrão para todas as linguagens de programação".

Exemplo da estrutura YAML:

library:
  - title: "The Great Gatsby"
    author: "F. Scott Fitzgerald"
    genre: "Novel"
    year: 1925
  - title: "To Kill a Mockingbird"
    author: "Harper Lee"
    genre: "Fiction"
    year: 1960

Geralmente, quando alguma ferramenta faz uso de arquivo de configuração, esse esquivo será feito em JSON ou YAML.

  • XML

O já citado antecessor ao JSON em relação a dominância de mercado, foi perdendo popularidade por ser muito menos intuitivo em termos de leitura, além da sobrecarga de processamento.

Exemplo da estrutura XML:

<?xml version="1.0" encoding="UTF-8"?>
<library>
  <book>
    <title>The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <genre>Novel</genre>
    <year>1925</year>
  </book>
  <book>
    <title>To Kill a Mockingbird</title>
    <author>Harper Lee</author>
    <genre>Fiction</genre>
    <year>1960</year>
  </book>
</library>

Apesar da adoção do JSON pela maioria, o XML ainda é muito usado para atender melhor a demanda de dados mais completos, é comum o banco de dados utilizar XML como formato de armazenamento.

Normalização de Dados com JSON

Na ciência da computação existe um termo chamado “tipos de dados complexos”, e podemos ver o JSON basicamente como uma forma de organizar e estruturar dados complexos de maneira hierárquica e legível.

Um exemplo de tipos de dados complexo utilizado no JSON é o objeto, ou o array, por exemplo.

Ok, mas o tópico é sobre normalização de dados, certo? A questão é que embora tipos de dados complexos possam oferecer flexibilidade e profundidade aos seus dados, também podem surgir irregularidades e discrepâncias se os dados não forem estruturados e padronizados adequadamente.

E é aí que a normalização de dados entra, esse é o processo de organizar dados em uma estrutura que minimize a redundância e facilite a consulta e atualização dos mesmos. No contexto de JSON, isso geralmente é feito dividindo os dados em várias partes relacionadas e usando IDs para referenciá-las.

Por exemplo, este é um conjunto de dados JSON que representa informações sobre livros e autores:

{
  "livros": [
    {
      "id": 1,
      "titulo": "Dom Casmurro",
      "autor": "Machado de Assis"
    },
    {
      "id": 2,
      "titulo": "Memórias Póstumas de Brás Cubas",
      "autor": "Machado de Assis"
    }
  ],
  "autores": [
    {
      "id": 1,
      "nome": "Machado de Assis",
      "nacionalidade": "Brasileiro"
    }
  ]
}

Neste exemplo, cada livro contém o nome do autor. Isso pode resultar em redundância se o mesmo autor tiver escrito vários livros. Em vez disso, podemos normalizar os dados dividindo os livros e os autores e referenciando os autores pelos IDs:

{
  "livros": [
    {
      "id": 1,
      "titulo": "Dom Casmurro",
      "autor_id": 1
    },
    {
      "id": 2,
      "titulo": "Memórias Póstumas de Brás Cubas",
      "autor_id": 1
    }
  ],
  "autores": [
    {
      "id": 1,
      "nome": "Machado de Assis",
      "nacionalidade": "Brasileiro"
    }
  ]
}

Essa abordagem economiza espaço e simplifica a atualização de informações do autor. Além disso, permite consultas mais eficientes, especialmente em conjuntos de dados grandes, pois os autores agora são referenciados por IDs únicos.

Conclusão

Obrigado por chegar até aqui, caro leitor! Fico feliz por termos explorado os conceitos essenciais do JSON, desde sua origem até sua ampla adoção juntos. Além de abordar os fundamentos, discutimos também tópicos comumente menos abordados, como a normalização de dados. Compreender esses aspectos é crucial para criar soluções eficientes e escaláveis nos seus projetos.

Por último, vou recomendar algo que me ajudou muito, anos atrás durante o meu começo na área de desenvolvimento de software. Saber que se seu JSON é válido e está correto é muito importante, às vezes deixamos escapar pequenas coisas por conta do olhar viciado. O site JASONlint valida seu JSON, confere se há erros, seja de estrutura, tipo de dados etc…

Bons estudos e que a sorte esteja sempre ao seu favor!

Jogos Vorazes

Referências

...

✅ JSON: Uma Visão Abrangente sobre o Formato de Dados Interchange


📈 199.2 Punkte

✅ Arquitetura Monolítica: Uma Visão Geral


📈 47.8 Punkte

✅ orms python: uma visão geral


📈 47.8 Punkte

✅ Redis: Um Guia Completo sobre o Banco de Dados em Memória - Curso em vídeo


📈 39.62 Punkte

✅ Discussão sobre o Advent of Code 2022 - Dia 3: Complexidade de operações em estruturas de dados


📈 39.62 Punkte

✅ Dockerizando uma API Express.js com Banco de Dados PostgreSQL para Testes e Produção


📈 36.74 Punkte

✅ Implementando uma Estrutura de Dados de Fila com ReactJS


📈 36.74 Punkte

✅ Aprenda de uma vez o que é Banco de Dados e SGBD


📈 36.74 Punkte

✅ Como adicionar banco de dados em uma aplicação .NET 7 [PT-BR]


📈 36.74 Punkte

✅ Estrutura de Dados: O que é uma pilha?


📈 36.74 Punkte

✅ Comunicação, comunidade e tecnologia: detalhes sobre dia a dia de uma pessoa Tech Community Manager


📈 36.04 Punkte

✅ Uma história sobre HTTP status code e por que você deve ler a documentação


📈 36.04 Punkte

✅ Faça do seu objetivo uma maratona, não uma sprint


📈 33.16 Punkte

✅ Visão computacional básica com Machine Learning (ML de Zero a 100, parte 2)


📈 31.22 Punkte

✅ Interchange 4.9.3/5.0/5.2 forum/submit.html type cross site scripting


📈 24.34 Punkte

✅ Infinite InterChange 3.61 Web Interface POST Request denial of service


📈 24.34 Punkte

✅ InterChange CGI cross site scripting


📈 24.34 Punkte

✅ Icdevgroup Interchange 5.4.0/5.4.1/5.4.2/5.6.0/5.7.0 variable cross site scripting


📈 24.34 Punkte

✅ Icdevgroup Interchange up to 5.5.3 Error Page privilege escalation


📈 24.34 Punkte

✅ Understanding the Basics: What is Electronic Data Interchange (EDI)?


📈 24.34 Punkte

✅ Interchange up to 5.5.3 denial of service [CVE-2008-2423]


📈 24.34 Punkte

✅ Road Planners Embrace the Diverging Diamond Interchange To Speed Up Traffic


📈 24.34 Punkte

✅ Interchange 5.4.1 denial of service [CVE-2007-2635]


📈 24.34 Punkte

✅ Was ist Electronic Data Interchange (EDI)?


📈 24.34 Punkte

✅ "GIF it to me, Baby!" – 30 Jahre Graphics Interchange Format


📈 24.34 Punkte

✅ 5 Tips for Success with Electronic Data Interchange


📈 24.34 Punkte

✅ Interchange up to 5.11.x Help System admin/help.html cross site scripting


📈 24.34 Punkte

✅ Low CVE-2020-12685: Redhat Interchange


📈 24.34 Punkte

✅ Circontrol CirCarLife up to up to 4.1 JSON setup.json information disclosure


📈 21.65 Punkte

✅ Parity Ethereum Client 1.7.8 JSON-RPC Endpoint JSON Object CORS privilege escalation


📈 21.65 Punkte

✅ CVE-2019-12017 | MapR CLDB JSON Framework JSON Request input validation


📈 21.65 Punkte

✅ cpp-ethereum JSON-RPC admin_addPeer API JSON Request erweiterte Rechte


📈 21.65 Punkte











matomo

Datei nicht gefunden!