O que é JSON e como é usado?

JSON (JavaScript Object Notation) é um formato padronizado para representar dados estruturados. Embora o JSON tenha surgido da linguagem de programação JavaScript, agora é um método onipresente de troca de dados entre sistemas. A maioria das APIs modernas aceita solicitações JSON e emite respostas JSON, portanto, é útil ter um bom conhecimento prático do formato e de suas características.

Neste artigo, explicaremos o que é JSON, como ele expressa diferentes tipos de dados e as maneiras de produzi-lo e consumi-lo em linguagens de programação populares. Também abordaremos algumas das limitações do JSON e as alternativas que surgiram.

índice

  1. Noções básicas de JSON
  2. Um exemplo básico de JSON
  3. Tipos de dados JSON
  4. semântica e validação
  5. Designação de conteúdo JSON
  6. Trabalhar com JSON
    1. javascript
    2. PHP
    3. Pitão
    4. Esfregar
  7. Limitações de JSON
    1. sem esquemas
    2. sem referências
    3. Sem tipos de dados avançados
  8. Alternativas JSON
  9. Resumo

Noções básicas de JSON

O JSON foi originalmente projetado por Douglas Crockford como um formato sem estado para comunicação de dados entre navegadores e servidores. No início dos anos 2000, os sites estavam começando a buscar dados adicionais de forma assíncrona de seu servidor, após o carregamento inicial da página. Como um formato baseado em texto derivado do JavaScript, o JSON facilitou a obtenção e o consumo de dados nesses aplicativos. A especificação foi finalmente padronizada como ECMA-404 em 2013.

JSON é sempre transmitido como uma string. Essas strings podem ser decodificadas em uma variedade de tipos de dados básicos, incluindo números, booleanos, matrizes e objetos. Isso significa que hierarquias e relacionamentos de objetos podem ser preservados durante a transmissão e, em seguida, remontados na extremidade receptora de maneira apropriada ao ambiente de programação.

Um exemplo básico de JSON

Esta é uma representação JSON de uma postagem de blog:

 { "id": 1001, "title": "O que é JSON?", "author": { "id": 1, "name": "James Walker" }, "tags": ["api", "json ", "programação"], "published": false, "publishedTimestamp": null }

Este exemplo demonstra todos os tipos de dados JSON. Ele também ilustra a concisão dos dados formatados em JSON, um dos recursos que o torna tão atraente para uso em APIs. Além disso, JSON é relativamente fácil de ler imediatamente, ao contrário de formatos mais detalhados como XML.

Tipos de dados JSON

Seis tipos de dados podem ser representados nativamente em JSON:

  • Instrumentos de cordas – As cordas são colocadas entre aspas duplas; caracteres podem ser escapados usando barras invertidas.
  • Números – Os números são escritos como dígitos sem aspas. Você pode incluir um componente fracionário para indicar um float. A maioria das implementações de análise JSON assume um número inteiro quando nenhum ponto decimal está presente.
  • Booleanos – Os valores literais true e false são suportados.
  • Nulo – O valor literal null pode ser usado para indicar um valor vazio ou omitido.
  • arrays – Um array é uma lista simples indicada por colchetes. Cada item na lista é separado por uma vírgula. As matrizes podem conter qualquer número de elementos e podem usar todos os tipos de dados suportados.
  • Objetos – Os objetos são criados usando colchetes. Eles são uma coleção de pares chave-valor onde as chaves são strings, entre aspas duplas. Cada chave tem um valor que pode receber qualquer um dos tipos de dados disponíveis. Você pode aninhar objetos para criar hierarquias em cascata. Uma vírgula deve seguir cada valor, significando o fim desse par chave-valor.

Os analisadores JSON convertem automaticamente esses tipos de dados em estruturas apropriadas para seu idioma. Não há necessidade de enviar manualmente o id para um inteiro, por exemplo. Analisar toda a string JSON é suficiente para mapear os valores para seu formato de dados original.

semântica e validação

O JSON tem certas regras que devem ser seguidas ao codificar seus dados. Os consumidores não poderão analisar strings que não estejam de acordo com a sintaxe.

É particularmente importante prestar atenção às aspas em torno de strings e chaves de objeto. Você também deve garantir que uma vírgula seja usada após cada entrada em um objeto ou matriz. No entanto, JSON não permite uma vírgula à direita após a última entrada; incluir acidentalmente um é uma causa comum de erros de validação. A maioria dos editores de texto destacará os problemas de sintaxe para você, ajudando a descobrir erros.

Apesar desses pontos comuns de falha, o JSON é um dos formatos de dados mais fáceis de escrever à mão. A maioria das pessoas acha a sintaxe rápida e conveniente quando se familiariza com ela. Em geral, o JSON tende a ser menos propenso a erros do que o XML, onde tags de abertura e fechamento incompatíveis, declarações de esquema inválidas e problemas de codificação de caracteres geralmente causam problemas.

Designação de conteúdo JSON

A extensão .json normalmente é usada quando JSON é salvo em um arquivo. O conteúdo JSON tem o tipo MIME padronizado application/json , embora text/json às vezes seja usado por motivos de compatibilidade. Hoje em dia você deve confiar em application/json para cabeçalhos HTTP Accept e Content-Type .

A maioria das APIs que usam JSON encapsulará tudo em um objeto de nível superior:

No entanto, isso não é necessário: um tipo literal é válido como um nó de nível superior em um arquivo, portanto, os exemplos a seguir também são JSON válidos:

Eles serão decodificados para seus respectivos escalares em sua linguagem de programação.

Trabalhar com JSON

A maioria das linguagens de programação tem suporte JSON embutido. Veja como interagir com dados JSON em alguns ambientes populares.

javascript

Em JavaScript, os JSON.stringify() e JSON.parse() são usados ​​para codificar e decodificar strings JSON:

 const post = { id : 1001 , title : "O que é JSON?" , autor : { id : 1 , nome : "James Walker" } } ; const codificadoJson = JSON. stringify(postar); // {"id": 1001, "title": "O que é JSON?", ...} console. log(encodedJson); const decodificadoJson = JSON. parse(encodedJson); // Console de James Walker. log (decodedJson.author.name) ;

PHP

As funções equivalentes em PHP são json_encode() e json_decode() :

 $post = [ "id" => 1001 , "title" => "O que é JSON?" , "autor" => [ "id" => 1 , "nome" => "James Walker" ] ] ; $encodedJson = json_encode($post); // {"id": 1001, "title": "O que é JSON?", ...} echo $encodedJson ; $decodedJson = json_decode($encodedJson, true); // James Walker echo $decodedJson [ "autor" ] [ "nome" ] ;

Pitão

Python fornece json.dumps() e json.loads() para serializar e desserializar respectivamente:

 import json post = { "id" : 1001 , "title" : "O que é JSON?" , "autor" : { "id" : 1 , "nome" : "James Walker" } } encodedJson = json. dumps ( post ) # {"id": 1001, "title": "O que é JSON?", ...} print (encodedJson) decodedJson = json. carrega (encodedJson) # James Walker print (decodedJson [ "autor" ] [ "nome" ] )

Esfregar

JSON.generate e JSON.parse rub oferecem:

 require "json" post = { "id" => 1001 , "title" => "O que é JSON?" , "autor" => { "id" => 1 , "nome" => "James Walker" } } encodedJson = JSON. gerar ( post ) # {"id": 1001, "title": "O que é JSON?", ...} puts encodedJson decodedJson = JSON. parse (encodedJson) # James Walker coloca decodedJson [ "autor" ] [ "nome" ]

Limitações de JSON

JSON é um formato leve que foca em passar os valores dentro de sua estrutura de dados. Isso torna a análise rápida e fácil de usar, mas significa que há desvantagens que podem causar frustração. Esses são alguns dos maiores problemas.

Os dados JSON não podem incluir comentários. A falta de anotações reduz a clareza e obriga você a colocar a documentação em outro lugar. Isso pode tornar o JSON inadequado para situações como arquivos de configuração, onde as modificações não são frequentes e os propósitos dos campos podem não ser claros.

sem esquemas

JSON não permite que você defina um esquema para seus dados. Não há como impor que id seja um campo inteiro obrigatório, por exemplo. Isso pode levar a estruturas de dados malformadas involuntariamente.

sem referências

Os campos não podem referenciar outros valores na estrutura de dados. Isso geralmente causa repetições que aumentam o tamanho do arquivo. Voltando ao exemplo de postagem de blog acima, você pode ter uma lista de postagens de blog da seguinte forma:

 { "posts": [ { "id": 1001, "title": "O que é JSON?", "author": { "id": 1, "name": "James Walker" } }, { "id" : 1002, "title": "O que é SaaS?", "author": { "id": 1, "name": "James Walker" } } ] }

Ambas as postagens têm o mesmo autor, mas as informações associadas a esse objeto tiveram que ser duplicadas. Em um mundo ideal, as implementações do analisador JSON poderiam produzir a estrutura mostrada acima a partir de uma entrada semelhante à seguinte:

 { "posts": [ { "id": 1001, "title": "O que é JSON?", "author": "{{ .authors.james }}" }, { "id": 1002, "title" : "O que é SaaS?", "autor": "{{ .authors.james }}" } ], "autores": { "james": { "id": 1, "name": "James Walker" } } }

No momento, isso não é possível com JSON padrão.

Sem tipos de dados avançados

Os seis tipos de dados suportados ignoram muitos tipos de valores comuns. O JSON não pode armazenar datas, horas ou pontos de geolocalização nativamente, portanto, você deve decidir seu próprio formato para essas informações.

Isso causa discrepâncias inconvenientes e casos extremos. Se o seu aplicativo trata carimbos de data/hora como strings, como 2022-07-01T12:00:00+00:00 , mas uma API externa renderiza carimbos de data/hora como segundos após a época do Unix: 1657287000 – você precisará se lembrar de quando usar cada um desses . os formatos.

Alternativas JSON

YAML é a principal alternativa JSON. É um superconjunto do formato que possui uma apresentação mais legível por humanos, tipos de dados personalizados e suporte para referências. Destina-se a abordar a maioria dos desafios de usabilidade associados ao JSON.

O YAML teve ampla adoção para arquivos de configuração e dentro de DevOps, IaC e ferramentas de observabilidade. É usado com menos frequência como formato de troca de dados para APIs. A relativa complexidade do YAML significa que ele é menos acessível aos recém-chegados. Pequenos erros de sintaxe podem causar erros de análise confusos.

Os buffers de protocolo (protobufs) são outro concorrente JSON emergente projetado para serializar dados estruturados. Protobufs têm declarações de tipo de dados, campos obrigatórios e suporte para a maioria das principais linguagens de programação. O sistema está ganhando popularidade como uma forma mais eficiente de transmissão de dados em redes.

Resumo

JSON é um formato de representação de dados baseado em texto que pode codificar seis tipos de dados diferentes. O JSON se tornou um elemento básico do ecossistema de desenvolvimento de software; ele suporta todas as principais linguagens de programação e se tornou o padrão para a maioria das APIs REST desenvolvidas nas últimas duas décadas.

Embora a simplicidade do JSON seja parte de sua popularidade, ela também impõe limitações ao que você pode realizar com o formato. A falta de suporte para esquemas, comentários, referências de objetos e tipos de dados personalizados significa que alguns aplicativos descobrirão que excedem o que é possível com JSON. Alternativas mais jovens, como YAML e Protobuf, ajudaram a enfrentar esses desafios, enquanto o XML continua sendo um concorrente para aplicativos que desejam definir um esquema de dados e não se importam com a verbosidade.

  • O que acontece se você marcar uma mensagem como spam no Messenger
  • Como exportar comentários do Instagram para o Excel gratuitamente

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão geek

JSON é um formato de texto simples para troca de dados. É um subconjunto da notação literal de objeto JavaScript, embora, devido à sua ampla adoção como alternativa ao XML, seja considerado um formato independente de linguagem.

O que é um JSON e para que serve?

JSON são strings – úteis quando você deseja transmitir dados por uma rede. Ele deve ser convertido em um objeto JavaScript nativo quando for necessário acessar seus dados. Isso não é um problema, pois o JavaScript possui um objeto JSON global que possui métodos disponíveis para conversão entre eles.

O que é um exemplo JSON?

Os arquivos JSON são arquivos de texto simples com uma extensão json . Por exemplo , um nome de arquivo pode ser estudantes. json ou cores. json .

O que significa em um JSON?

JSON (JavaScript Object Notation) é um formato de intercâmbio de dados leve. JSON é fácil de ler e escrever para os usuários. JSON é fácil para as máquinas analisarem e gerarem. JSON é baseado em um subconjunto da linguagem de programação JavaScript, Standard ECMA-262 3rd Edition – dezembro de 1999.

Como você cria um JSON?

JSON é composto de duas estruturas: Uma coleção de pares nome/valor. Em muitas linguagens isso é conhecido como objeto, registro, estrutura, dicionário, tabela de hash, lista de chaves ou array associativo. Uma lista ordenada de valores.

Ir arriba