Serializando objetos em JSON: Neste artigo serão apresentadas algumas formas para se realizar a serialização e deserialização de objetos em JSON (JavaScript Object Notation) no .NET Framework, com exemplos na linguagem C#. Serão apresentadas as classes nativas DataContractJsonSerializer, JavaScriptSerlializer e em seguida a biblioteca externa Json.NET, possibilitando a comparação entre estas e facilitando a escolha daquela que melhor atende a cada necessidade.

Em que situação este tema é útil: O tema abordado neste artigo é útil no dia a dia de todo desenvolvedor que necessita armazenar ou transferir dados entre aplicações utilizando um dos formatos que mais tem ganhado espaço nos últimos anos, o JSON. Este conteúdo também é útil para aqueles que desejam conhecer as opções oferecidas pelo .NET Framework para fazer a serialização de objetos nesse formato de dados, de forma a estar pronto para escolher entre elas e utilizá-las quando for necessário.

O rápido avanço dos softwares e o aumento da sua importância nos processos diários de diversos setores da sociedade têm feito ocorrer grandes modificações no perfil das aplicações em geral. Programas que antes se resumiam a editores de texto que mal exibiam na tela o conteúdo digitado e o enviavam para uma impressora matricial, agora precisam atender a exigências e seguir tendências que mudam quase que diariamente.

As aplicações atuais precisam estar aptas a trabalhar com grandes volumes de dados e, além disso, importar e exportar informações de diversos tipos e fontes. Os sistemas devem ser capazes de interagir uns com os outros e realizar a troca de informações, bem como armazená-las de forma segura e adequada à finalidade a que se destinam. Porém, não existe uma ferramenta única para desenvolvimento de software, pelo contrário, são várias as plataformas e linguagens já existentes e que não param de surgir e se renovar. Também não há uma regra universal que dite como as informações devem ser tratadas e armazenadas, o que por muito tempo fez com que cada aplicação trabalhasse de maneira totalmente individual e manipulasse seus dados de uma forma que dependia apenas dos desenvolvedores.

Com o passar do tempo, a necessidade de que as informações geradas por um software pudessem ser aproveitadas por outro fez com que novas estratégias fossem desenvolvidas para atender as exigências do mercado. Os grandes sistemas gerenciadores de bancos de dados têm muito em comum entre si, como a forma de armazenar os dados em tabelas, então uma solução seria que todo software, independente da linguagem utilizada em seu desenvolvimento, pudesse acessar todo tipo de banco de dados. Hoje isso quase é possível, pois a maioria dos SGBDs comerciais disponibilizam provedores para serem acessados a partir das principais linguagens de programação. Mas é fácil perceber que essa alternativa não é tão viável, pois cada aplicação possui seu banco de dados, com um modelo totalmente planejado para atender às necessidades que motivaram sua criação. Logo, não é possível (ou viável) que um sistema, para obter informações provenientes de outro, precise acessar diretamente a base de dados principal deste segundo.

Para resolver este conflito, formatos de representação de dados foram propostos e passaram a ser utilizados como padrões, seguidos por todos aqueles que os desejassem aderir a eles. Dentre estas soluções, destaca-se a XML (Extensible Markup Language, ou Linguagem de Marcação Estendida), uma linguagem reconhecida pela W3C (BOX 1) que tem como objetivo representar e organizar dados de forma hierárquica. Essa linguagem se difundiu rapidamente e passou a ser usada como principal forma de intercâmbio de informações entre aplicações, principalmente através da internet. Com sua popularização, as diversas linguagens de programação passaram a suportar diretamente a manipulação de dados nesse formato, o que permitiu que um arquivo XML gerado por uma aplicação pudesse ser facilmente lido por outra, desenvolvida em plataforma diferente, pois o que prevalecia eram as regras de estruturação dos dados definidos pelo padrão XML.

A XML pode ser utilizada para representar desde dados simples, como textos e valores numéricos, até coleções de objetos complexos, com várias propriedades. Na Listagem 1 vemos um exemplo de um objeto Venda, com suas propriedades e itens, representado em formato XML.

Listagem 1. Objeto complexo representado em formato XML

<?xml version="1.0" encoding="utf-8"?>
<Venda>
  <Data>24/07/2013</Data>
  <Valor>100,00</Valor>
  <Cupom>102030</Cupom>
  <Itens>
   <Item>
      <Codigo>123</Codigo>
      <Quantidade>1</Quantidade>
      <Subtotal>30,00</Subtotal>
   </Item>
   <Item>
      <Codigo>456</Codigo>
      <Quantidade>2</Quantidade>
      <Subtotal>70,00</Subtotal>
   </Item>
 </Itens>
</Venda>

Notamos que os dados são organizados de forma hierárquica e utilizando os sinais < e >. Maiores detalhes sobre a linguagem XML fogem do objetivo deste artigo, mas é importante conhecer, ainda que de forma básica, o formato que atualmente é o mais utilizado para a troca de informações entre aplicações. Tendo esse entendimento, será mais fácil compreender o formato concorrente e que é foco deste artigo, o JSON.

BOX 1. W3C

O W3C (World Wide Web Consortium) é uma comunidade fundada por Tim Berners-Lee, o criador da Web, e formada por diversos membros como universidades e empresas privadas, que cooperam para o desenvolvimento de padrões utilizados na web, como as linguagens HTML e CSS.

O formato JSON

JSON (em inglês JavaScript Object Notation) é um formato para troca de dados baseado na sintaxe de representação de objetos da linguagem de script JavaScript. Apesar do nome e de ser derivado dessa linguagem, o uso do formato JSON não requer necessariamente a linguagem JavaScript, pelo contrário, a maioria das linguagens de programação atuais oferecem meios para se trabalhar com esse formato.

A sintaxe JSON é bastante simples e muito conhecida por programadores que utilizam linguagens cuja sintaxe deriva de C, como C++, C# e Java. Isso faz com que este formato seja de fácil leitura por humanos e de fácil interpretação pelas máquinas, tornando-o bastante adequado a operações de troca de dados entre aplicações, principalmente na internet. Por este motivo, JSON se apresenta como um concorrente da linguagem XML, com maior expressividade no meio web, devido à facilidade de manipulação através de JavaScript e melhor desempenho.

Para representar dados em JSON deve-se seguir algumas regras, são elas:

...

Quer ler esse conteúdo completo? Tenha acesso completo