Menu

Tradução

Português English Español Français

Serialização e Desserialização JSON em Delphi: Objetos na Prática

Nesse post iremos aprender sobre Serialização e Desserialização JSON em Delphi, com exemplo prático e código fonte para download.

 

Serialização e Desserialização JSON em Delphi
Mão aberta com a palma voltada para cima e com vários símbolos saindo dela.

Introdução

A serialização e desserialização JSON em Delphi permitem converter objetos Delphi em JSON e reconverter esses dados para objetos novamente, facilitando a troca de informações entre sistemas, APIs e aplicações distribuídas. Esse processo é amplamente utilizado em integrações REST, persistência de dados e comunicação entre diferentes tecnologias.

Em aplicações modernas, a serialização e desserialização são fundamentais para garantir interoperabilidade, eficiência e padronização no transporte de dados. Em Delphi, esses recursos possibilitam transformar estruturas complexas de objetos em JSON de forma segura e organizada, além de permitir o tratamento adequado de erros durante esse processo.

Neste artigo, você vai aprender como realizar a serialização e desserialização de objetos Delphi para JSON e vice-versa, utilizando boas práticas, exemplos práticos e código-fonte para download, abordando também a estruturação dos dados e os erros mais comuns encontrados nesse tipo de implementação.

O que é Serialização?

Serialização é o processo de converter um objeto em um formato que pode ser facilmente armazenado ou transmitido, como JSON, XML, ou binário. No caso do JSON, um dos formatos mais utilizados na web, a serialização envolve transformar um objeto Delphi em uma string JSON que pode ser enviada através de uma API, armazenada em um arquivo, ou transmitida por uma rede.

Esse processo é essencial para a troca de dados entre diferentes sistemas e plataformas, garantindo que as informações sejam mantidas de maneira íntegra e possam ser reconstruídas no destino. Além disso, a serialização é fundamental em aplicações distribuídas onde a comunicação entre componentes é crítica. Ela também facilita o armazenamento de estados de objetos em bancos de dados ou arquivos, contribuindo para a persistência de dados e a recuperação de informações quando necessário.

O que é Desserialização?

Desserialização é o processo inverso, onde uma string JSON (ou outro formato de dados serializados) é convertida de volta em um objeto Delphi. Isso é especialmente útil quando recebemos dados de uma API ou lemos um arquivo JSON e precisamos manipular esses dados como objetos dentro do Delphi.

A desserialização facilita a interação com serviços web modernos, permitindo que a aplicação Delphi se comunique de forma eficaz com outras aplicações ou sistemas. Para realizar essa operação, utilizam-se bibliotecas específicas como JSON Delphi Library (SuperObject) ou a biblioteca nativa de JSON do Delphi. Essas ferramentas permitem não apenas a conversão de dados, mas também oferecem funcionalidades adicionais para validação, tratamento de erros e conversão de tipos, tornando o desenvolvimento de software mais robusto e eficiente.

Convertendo Objetos Delphi para JSON (Serialização)

Para serializar um objeto Delphi para JSON, podemos usar a unidade System.JSON, que faz parte da biblioteca padrão do Delphi. Vamos começar com um exemplo básico de como serializar um objeto simples.

Delphi

uses
  System.SysUtils, System.JSON, System.Classes, REST.JSON;

type
  TPerson = class
  private
    FName: string;
    FAge: Integer;
  public
    property Name: string read FName write FName;
    property Age: Integer read FAge write FAge;
  end;

procedure SerializeToJson;
var
  Person: TPerson;
  JsonString: string;
begin
  Person := TPerson.Create;
  try
    Person.Name := 'John Doe';
    Person.Age := 30;

    // Serializando o objeto para JSON
    JsonString := TJson.ObjectToJsonString(Person);
    WriteLn(JsonString);  // {"Name":"John Doe","Age":30}
  finally
    Person.Free;
  end;
end;

begin
  SerializeToJson;
end.
  

Explicação do Código

  1. Definição da Classe TPerson: Definimos uma classe TPerson com duas propriedades: Name e Age.
  2. Criação do Objeto: Criamos uma instância da classe TPerson, atribuímos valores às suas propriedades e, em seguida, usamos o método TJson.ObjectToJsonString para serializar o objeto em uma string JSON.
  3. Resultado: A string JSON gerada é {"Name":"John Doe","Age":30}, que representa o objeto Person em formato JSON.

Convertendo JSON para Objetos Delphi (Desserialização)

Agora, vamos desserializar a string JSON de volta para um objeto Delphi. Isso é útil quando recebemos dados de um serviço web ou lemos um arquivo JSON e queremos manipulá-los como objetos.

Delphi

uses
  System.SysUtils, System.JSON, REST.JSON;

procedure DeserializeFromJson;
var
  JsonString: string;
  Person: TPerson;
begin
  JsonString := '{"Name":"John Doe","Age":30}';

  // Desserializando o JSON para um objeto Delphi
  Person := TJson.JsonToObject<TPerson>(JsonString);
  try
    WriteLn('Name: ' + Person.Name);  // John Doe
    WriteLn('Age: ' + IntToStr(Person.Age));  // 30
  finally
    Person.Free;
  end;
end;

begin
  DeserializeFromJson;
end.
  

Explicação do Código

  1. String JSON: Temos uma string JSON {"Name":"John Doe","Age":30} que representa um objeto TPerson.
  2. Desserialização: Usamos o método TJson.JsonToObject<TPerson> para desserializar a string JSON em uma instância da classe TPerson.
  3. Manipulação dos Dados: Agora podemos acessar as propriedades Name e Age do objeto Person como se ele tivesse sido criado diretamente no Delphi.

Veja abaixo uma ilustração do projeto:

Ilustração do projeto.

Código fonte do exemplo

Você pode fazer o download do exemplo do projeto através do repositório do github:

https://github.com/Gisele-de-Melo/Serializacao_Desserializacao_JSON

Boas Práticas

  1. Validação de Dados: Sempre valide os dados ao desserializar JSON para objetos Delphi. Certifique-se de que o JSON é válido e contém os campos esperados para evitar erros de execução.
  2. Gerenciamento de Memória: Utilize try/finally ou smart pointers para garantir que os objetos sejam liberados corretamente após a desserialização.
  3. Estrutura de Dados: Mantenha uma estrutura clara e organizada para suas classes, facilitando o processo de serialização e desserialização. Evite classes com muitas propriedades aninhadas, pois isso pode dificultar a manutenção e depuração do código.
  4. Tratamento de Exceções: Adicione tratamento de exceções para capturar erros durante a serialização e desserialização, especialmente ao lidar com dados de fontes externas.

Conclusão

A serialização e desserialização de objetos Delphi para JSON é uma técnica poderosa que permite que os desenvolvedores trabalhem de forma eficiente com dados estruturados. Ao seguir boas práticas e usar as ferramentas adequadas fornecidas pelo Delphi, você pode simplificar a troca de dados em suas aplicações, garantindo que elas sejam robustas, seguras e fáceis de manter.

Com esses exemplos, você agora possui uma base sólida para implementar a serialização e desserialização em seus projetos Delphi, aproveitando ao máximo as capacidades dessa linguagem para manipulação de dados JSON.

Posts Relacionados



Nenhum comentário:

Postar um comentário

Delphi na Prática: Desenvolva um Sistema Completo do Zero

Neste artigo, você poderá ter acesso ao curso "Delphi na prática: Construindo uma Agenda de Compromissos Profissional." ...