O que é JSON? JavaScript Object Notation desvendado

O JavaScript Object Notation, popularmente conhecido por JSON, é uma representação baseada em texto, sem schema, baseada em pares de valores-chave e listas ordenadas. Embora o JSON seja derivado do JavaScript, ele é suportado de forma nativa ou através de bibliotecas na maior parte das principais linguagens de programação. O JSON é comumente usado, mas não exclusivamente, para trocar informações entre clientes e servidores web.

Nos últimos 15 anos, o JSON tornou-se onipresente na web. Hoje é o formato favorito para quase todos os serviços web disponíveis publicamente, e também é usado com freqüência para serviços web privados.

A popularidade do JSON também resultou em suporte JSON nativo para inúmeros bancos de dados. Bancos de dados relacionais como o PostgreSQL e o MySQL agora são entregues com suporte nativo para armazenamento e query de dados JSON. Os bancos de dados NoSQL, como o MongoDB e o Neo4j, também suportam o JSON, embora o MongoDB use uma versão binária modificada do JSON.

Abaixo, vamos examinar rapidamente o JSON e discutir de onde veio, suas vantagens em relação ao XML, suas desvantagens, quando você deve usá-lo e quando considerar alternativas. Vamos começar com um exemplo:


A estrutura acima define claramente alguns atributos de uma pessoa. Inclui um nome e sobrenome, o número de vezes que a pessoa iniciou a sessão, seja ela um writer, uma lista de empresas com a qual trabalha e uma lista de animais de estimação da pessoa (apenas um, neste caso). Uma estrutura como a acima representada pode passar de um servidor para um navegador web ou uma aplicação móvel, que então executará algumas ações, como exibir os dados ou salvá-los para referência posterior.

O JSON é um formato genérico de dados com um número mínimo de tipos de valores: strings, números, booleanos, listas, objetos e nulos. Embora a notação seja um subconjunto JavaScript, esses tipos são representados em todas as linguagens de programação comuns, tornando o JSON um bom candidato para transmitir dados entre várias linguagens.

Por que eu deveria usar o JSON?


Para entender a utilidade e a importância do JSON, teremos que entender um pouco sobre a história da interatividade na web.

No início dos anos 2000, a interatividade na web começou a se transformar. Naquele momento, o navegador serviu principalmente como um cliente “burro” para exibir informações, e o servidor fez todo o trabalho duro para preparar o conteúdo para exibição. Quando um usuário clicava em um link ou em um botão no navegador, uma solicitação seria enviada para o servidor, o servidor prepararia as informações necessárias como o HTML e o navegador renderizaria o HTML como uma nova página. Esse padrão era lento e ineficiente, exigindo que o navegador voltasse a renderizar tudo na página, mesmo que apenas uma seção da página tivesse sido alterada.

Como os reloads de página inteira eram onerosos, os desenvolvedores web procuravam tecnologias mais atuais para melhorar a experiência geral do usuário. Enquanto isso, a capacidade de fazer requisições web em segundo plano enquanto uma página estava sendo carregada, havia sido introduzida recentemente no Internet Explorer 5, e provava ser uma abordagem viável para carregar dados de forma incremental para exibição. Em vez de fazer o reload de todo o conteúdo da página, clicar no botão “Atualizar” desencadearia uma requisição web que seria carregada em segundo plano. Quando o conteúdo fossem carregados, os dados poderiam ser manipulados, salvos e exibidos na página usando JavaScript, a linguagem de programação universal dos navegadores.

Originalmente, os dados eram transferidos para o formato XML (veja abaixo um exemplo), mas o XML era verboso e difícil de gerenciar no JavaScript. O JavaScript já tinha objetos, que são uma forma de expressar dados dentro do idioma, então Douglas Crockford tomou um subconjunto dessa expressão como uma especificação para um novo formato de intercâmbio de dados e apelidou de JSON. O nome JSON foi muito mais fácil para as pessoas lerem e para que os navegadores analisassem. Logo os desenvolvedores web começaram também a preferir o JSON sobre o XML.

Tendo avançado rapidamente até a presente data, o JSON é o padrão para o compartilhamento de dados entre clientes web e clientes móveis e serviços de back-end.

JSON versus XML


Conforme mencionado acima, a principal alternativa ao JSON é o XML. No entanto, o XML está cada vez menos comum em novos sistemas, e é fácil entender o por que. Abaixo vemos uma versão dos dados exibidos acima, desta vez em XML:


Além de ser mais verboso (exatamente duas vezes mais, neste caso), o XML também apresenta alguma ambigüidade ao analisar uma estrutura de dados compatível com o JavaScript. A conversão do XML para um objeto JavaScript pode levar de dezenas a centenas de linhas de código e, em última análise, requer personalização com base no objeto específico que está sendo analisado. Converter o JSON para um objeto JavaScript leva uma linha de código e não exige nenhum conhecimento prévio sobre o objeto que está sendo analisado.

Limitações do JSON


Embora o JSON seja um formato de dados relativamente conciso e flexível, e fácil de trabalhar em muitas linguagens de programação, existem algumas desvantagens para o formato. Aqui estão as 5 principais limitações:


Sem schema. Por um lado, isso significa que você tem total flexibilidade para representar os dados da maneira como quiser. Por outro lado, significa que também pode criar dados deformados com facilidade.

Apenas um tipo de número: o formato de ponto flutuante de dupla precisão, IEEE-754. Isso significa que você não pode aproveitar os diversos tipos de números e nuances disponíveis em muitas linguagens de programação.

Sem date type. Essa omissão significa que os desenvolvedores devem recorrer ao uso de representações de strings de datas, levando a discrepâncias de formatação, ou ainda à representação de datas em milissegundos desde a época (1 de janeiro de 1970).

Sem comentários. Isso torna impossível anotar campos inline, exigindo documentação adicional e aumentando a probabilidade de desentendimentos.

Verbosidade. Enquanto o JSON é menos verboso que o XML, não é o formato de intercâmbio de dados mais conciso. Para serviços de alto volume ou de propósito especial, é recomendável usar formatos de dados mais eficientes.

Quando devo usar o JSON?


Se você estiver escrevendo um software que se comunica com um navegador ou aplicativo móvel nativo, deve usar o JSON como formato de dados. Usar um formato como o XML é uma escolha desatualizada e uma bandeira vermelha para o talento em front-end e mobile que de outra maneira você gostaria de atrair.

No caso de comunicação servidor-a-servidor, você estará melhor servido se se valer de um framework de serialização como Apache Avro ou Apache Thrift. O JSON não é uma escolha ruim aqui, e ainda pode ser exatamente o que você precisa, mas a resposta não é tão clara quanto para a comunicação na web e em dispositivos móveis.

Se você estiver usando bancos de dados NoSQL, estará muito preso ao que o banco de dados lhe proporciona. Em bancos de dados relacionais que suportam o JSON como um tipo, uma boa regra geral é usá-lo o mínimo possível. Os bancos de dados relacionais foram sintonizados para dados estruturados que se encaixam em um schema específico. Enquanto a maioria agora oferece suporte a dados mais flexíveis na forma de JSON, você pode esperar um pico de desempenho ao procurar propriedades dentro desses objetos JSON.

O JSON é o formato onipresente e “de fato” para o envio de dados entre servidores web e navegadores e aplicativos móveis. O seu simples design e flexibilidade facilitam a leitura e a compreensão e, na maioria dos casos, são fáceis de manipular na linguagem de programação escolhida. A falta de um esquema estrito permite a flexibilidade do formato, mas essa flexibilidade às vezes torna difícil garantir que você esteja lendo e gravando JSON corretamente.

É provável que seja mais trabalhoso lidar com JSON em linguagens fortemente “tipadas”, como Scala ou Elm, mas a adoção generalizada do JSON significa que existem bibliotecas e utilitários para ajudá-lo por todas as partes mais difíceis. Escolher XML sobre o JSON ao criar um novo serviço na web é uma red flag que provavelmente afastará o talento, porque indica uma falta de interesse em permanecer relevante.

Fonte: InfoWorld

21