Menu

Tradução

Português English Español Français

Introdução ao JSON em Delphi

Nesse post iremos fazer uma introdução ao JSON em Delphi.

 

Introdução ao JSON em Delphi
JSON

Introdução

Nesse post iremos fazer uma introdução ao JSON em Delphi. Falaremos sobre o que é o JSON, qual a estrutura básica do JSON e um exemplo simples e prático para que você possa começar a trabalhar com JSON em Delphi de forma eficiente, elevando o nível dos seus projetos.

O que é JSON e Por que é Importante

JSON, ou JavaScript Object Notation, é um formato leve de troca de dados que é fácil para os seres humanos lerem e escreverem, e fácil para as máquinas interpretarem e gerarem. JSON é baseado em um subconjunto da linguagem de programação JavaScript, mas é independente de linguagem e plataforma, o que o torna uma escolha popular para a comunicação entre sistemas diferentes.

Estrutura básica do JSON

Um arquivo JSON é essencialmente uma coleção de pares chave-valor organizados de uma forma que se parece muito com a estrutura de um objeto em JavaScript. Se você nunca programou em JavaScript, não se preocupe! Pense nisso como uma lista de itens, onde cada item tem um nome (a chave) e um valor associado a ele.

Simplificando, um documento JSON é composto de pares chave-valor e listas ordenadas de valores. Aqui está um exemplo simples de JSON:

Delphi

{
  "nome": "João",
  "idade": 30,
  "habilidades": ["Delphi", "JavaScript", "SQL"]
}
  

Neste exemplo, temos um objeto JSON que representa uma pessoa com nome, idade e uma lista de habilidades.

Vamos entender cada parte:

  1. Chaves: As chaves são os nomes dos itens que você está descrevendo. No exemplo, as chaves são "nome", "idade", e "habilidades". Elas sempre aparecem entre aspas duplas.
  2. Valores: Os valores são os dados reais associados a cada chave. No exemplo, os valores são "João" (um texto), 30 (um número), e "Delphi", "JavaScrip" e "SQL" (uma lista). Os valores podem ser de vários tipos, como texto (string), número, booleano (true ou false) ou até mesmo outros objetos ou listas.
  3. Pares Chave-Valor: Cada par chave-valor é separado por dois pontos (:). E cada par é separado por vírgulas. Tudo isso é envolvido por chaves ({}), que indicam o início e o fim do objeto JSON.
  4. Lista: As listas são representadas por colchetes([ ]), e elas vem sempre depois dos dois pontos, indicando que está sempre do lado do valor.

Tipos de Dados em JSON

Agora que você conhece a estrutura básica, vamos falar sobre os tipos de dados que você pode usar em JSON.

1- String: Sequências de texto, sempre entre aspas duplas. Exemplo: "nome": "Maria"

2- Número: Valores numéricos, que podem ser inteiros ou decimais. Exemplo: "idade": 30

3- Booleano: Valores verdadeiros (true) ou falsos (false). Exemplo: "casado": true

4- Objeto: Um objeto dentro de outro objeto. Exemplo:

Delphi

{ 
  "endereco": { 
    "rua": "Av. Paulista", 
    "numero": 1000 
  } 
}
  

5- Aqui, endereco é uma chave que contém outro objeto como valor.

6- Array (Lista): Uma lista de valores, que pode incluir strings, números, objetos, ou até mesmo outras listas. Exemplo:

Delphi

{ 
  "amigos": ["João", "Ana", "Pedro"] 
}
  

Neste exemplo, a chave "amigos" está associada a uma lista de strings.

Exemplo Mais Complexo

Vamos juntar tudo isso em um exemplo mais completo:

Delphi

{
  "nome": "Carlos",
  "idade": 25,
  "casado": false,
  "endereco": {
    "rua": "Rua das Flores",
    "numero": 123,
    "cidade": "Rio de Janeiro"
  },
  "hobbies": ["futebol", "leitura", "cinema"]
}
  

Neste JSON:

  • "nome" é uma string.
  • "idade" é um número.
  • "casado" é um booleano.
  • "endereco" é um objeto com suas próprias chaves e valores.
  • "hobbies" é uma lista de strings.

Por Que JSON é Importante?

JSON é muito utilizado especialmente para executar a comunicação entre sistemas, especialmente na web. Ele é o formato de dados preferido para APIs web, substituindo o uso do XML em muitos casos devido à sua simplicidade e legibilidade. As vantagens do JSON incluem:

  • Leveza: JSON tem uma estrutura simples e leve, o que o torna eficiente para transmissão de dados.
  • Facilidade de Uso: A sintaxe de JSON é fácil de ler e escrever, tanto para humanos quanto para máquinas.
  • Suporte Universal: JSON é suportado por praticamente todas as linguagens de programação modernas.

Vantagens de Usar JSON para Troca de Dados

Simplicidade

JSON é fácil de ler e escrever, com uma estrutura simples que usa apenas alguns delimitadores como chaves {}, colchetes [] e dois pontos :. Isso torna JSON uma escolha intuitiva para desenvolvedores.

Compactação

JSON é mais compacto que XML, o que significa que ele requer menos espaço para armazenar e transmitir os mesmos dados. Isso é particularmente importante em redes de alta latência e baixa largura de banda, como redes móveis.

Suporte em Diversas Linguagens

JSON é amplamente suportado em diversas linguagens de programação. Em Delphi, podemos usar bibliotecas como System.JSON para manipular JSON de forma eficiente.

Flexibilidade

JSON é flexível o suficiente para representar dados complexos, incluindo objetos aninhados e arrays. Isso permite que ele se adapte a uma ampla variedade de cenários de aplicação.

Integração com APIs Web

APIs RESTful modernas frequentemente utilizam JSON para envio e recebimento de dados. Isso facilita a integração entre sistemas diferentes, independentemente da linguagem de programação ou plataforma usada.

Trabalhando com JSON em Delphi

Delphi fornece suporte robusto para trabalhar com JSON através da unidade System.JSON. Vamos explorar como criar, manipular e interpretar JSON em Delphi com exemplos práticos.

Criando JSON em Delphi

Para criar um objeto JSON em Delphi, usamos as classes TJSONObject e TJSONArray. Aqui está um exemplo de como criar o JSON que mostramos anteriormente:

Passo 1: Abra o Delphi e crie um novo projeto VCL Forms Application.

Passo 2: Adiciona a biblioteca System.JSON, na sessão uses do formulário principal.

Passo 3: Insira 3 componentes TButton, que serão responsáveis por acionarem o gatilho de criação, leitura e manipulação do arquivo JSON.

Passo 4: Insira uma componente TMemo, que será responsável por exibir a leitura do arquivo JSON.

Veja o código abaixo:

Delphi

uses
  System.JSON;

procedure CriarJSON;
var
  JSONObj: TJSONObject;
  JSONArray: TJSONArray;
begin
  JSONObj := TJSONObject.Create;
  try
    JSONObj.AddPair('nome', 'João');
    JSONObj.AddPair('idade', TJSONNumber.Create(30));

    JSONArray := TJSONArray.Create;
    JSONArray.Add('Delphi');
    JSONArray.Add('JavaScript');
    JSONArray.Add('SQL');

    JSONObj.AddPair('habilidades', JSONArray);

    JSONStr := JSONObj.ToString;

    ShowMessage('Arquivo JSON criado com sucesso.');
  finally
    JSONObj.Free;
  end;
end;
  

No exemplo acima, JSONObj.AddPair é o método responsável por adicionar a chave e o valor para nome e idade. Já o método JSONArray.Add é responsável por criar a lista de "habilidades" em forma de JSONArray e depois injetada no JSONObj.AddPair como sendo o valor da chave "habilidades". Todo o arquivo JSON criado é armazenado em uma variável privada chamada JSONStr, para que possa ser utilizada posteriormente pelos métodos de leitura e modificação do JSON.

Lendo JSON em Delphi

Para ler e interpretar JSON, usamos as classes fornecidas pelo Delphi para acessar os pares chave-valor e arrays. Aqui está um exemplo de como ler o JSON criado anteriormente:

Delphi

uses
  System.JSON;

procedure LerJSON(const JSONString: string);
var
  JSONObj: TJSONObject;
  Habilidades: TJSONArray;
  I: Integer;
begin
  JSONObj := TJSONObject.ParseJSONValue(JSONString) as TJSONObject;
  try
    Memo1.Clear;
    if Assigned(JSONObj) then
    begin
      Memo1.Lines.Add('Nome: '+ JSONObj.GetValue('nome').Value);
      Memo1.Lines.Add('Idade: '+ JSONObj.GetValue('idade').Value);

      Habilidades := JSONObj.GetValue('habilidades') as TJSONArray;
      Memo1.Lines.Add('Habilidades:');
      for I := 0 to Habilidades.Count - 1 do
      begin
        Memo1.Lines.Add(' - '+ Habilidades.Items[I].Value);
      end;
    end;
  finally
    JSONObj.Free;
  end;
end;
  

No exemplo acima é utilizado um TMemo para exibir o conteúdo do arquivo JSON formatado. Para a leitura de cada chave é utilizado o método JSONObj.GetValue, do mesmo jeito que é feito para ler as "habilidades" através do JSONArray. Um laço de repetição for é utilizado para exibir as "habilidades" uma a uma.

Manipulando JSON em Delphi

Manipular JSON em Delphi é direto, graças às classes e métodos fornecidos. Podemos adicionar, remover ou alterar pares chave-valor e itens de array facilmente. Aqui está um exemplo de como modificar um objeto JSON:

Delphi

uses
  System.JSON;

procedure ModificarJSON(var JSONString: string);
var
  JSONObj: TJSONObject;
begin
  JSONObj := TJSONObject.ParseJSONValue(JSONString) as TJSONObject;
  try
    if Assigned(JSONObj) then
    begin
      JSONObj.RemovePair('idade');
      JSONObj.AddPair('idade', TJSONNumber.Create(31));

      JSONString := JSONObj.ToString;
    end;
  finally
    JSONObj.Free;
  end;
end;
  

No exemplo acima, o método JSONObj.RemovePair remove a chave-valor "idade" e logo em seguida o método JSONObj.AddPair adiciona novamente a chave "idade" mas com o valor de 31, ou seja, modificando o valor da chave "idade" que anteriormente foi criada como 30.

Veja abaixo a 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/Introducao_JSON

Conclusão

JSON é uma ferramenta poderosa e flexível para troca de dados, amplamente usada em desenvolvimento web e integração de sistemas. Em Delphi, a unidade System.JSON fornece tudo o que precisamos para criar, ler e manipular JSON de forma eficiente.

Neste artigo, vimos o que é JSON, suas vantagens e como trabalhar com JSON em Delphi com exemplos práticos. Entender e utilizar JSON é uma habilidade essencial para qualquer desenvolvedor moderno, e Delphi torna isso acessível e eficiente.

Posts Relacionados



Nenhum comentário:

Postar um comentário

Recursividade em Delphi: Conceitos, Exemplos e Aplicações Práticas

Neste post, você aprenderá quando usar recursividade em Delphi, suas vantagens e desvantagens, além de um exemplo prático implementa...