logotipo Blog Giovani Da Cruz
Delphi

Como Atualizar Dados em JSON no Delphi

4 min de leitura 127 visualizações
Como Atualizar Dados em JSON no Delphi
Mecanismo para facilitar a manipulação de Valores em JSON

 

Manipular dados em JSON é uma tarefa comum para desenvolvedores, mas no Delphi, essa operação pode parecer desafiadora, especialmente quando se trata de atualizar valores existentes. Neste artigo, vamos explorar como fazer isso de forma eficiente, utilizando um código funcional e organizado.

 

O Problema

No Delphi, você não pode simplesmente sobrescrever valores em um objeto JSON com uma atribuição direta. Tentar algo como:

EnderecoObj.Values['cidade'] := 'Rio de Janeiro'; // Gera erro

Isso resulta no erro E2129 Cannot assign to a read-only property. A solução é remover a chave existente e depois adicionar o novo valor. Para simplificar esse processo, criamos o método PostValue, que lida automaticamente com a remoção e adição do valor.

 

O Método PostValue

A função PostValue, que criamos aqui, encapsula a lógica de atualização, tornando o código mais limpo e reutilizável:

procedure PostValue(pObj: TJSONObject; pName: String; pJSONValue: TJSONValue);
var
  vJsonPair: TJsonPair;
begin
  vJsonPair := pObj.Get(pName);

  if Assigned(vJsonPair) then
  begin
    // Removendo o par existente
    pObj.RemovePair(pName);
    // Adicionando o novo valor
    pObj.AddPair(pName, pJSONValue);
  end
  else
    // Adiciona o par caso ele não exista
    pObj.AddPair(pName, pJSONValue);
end;

 

Exemplo Completo

Abaixo está o exemplo funcional que utiliza o método PostValue para atualizar dados de um JSON.

(*

Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br

*)

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.JSON, System.SysUtils;

procedure PostValue(pObj: TJSONObject; pName: String; pJSONValue: TJSONValue);
var
  vJsonPair: TJsonPair;
begin
  vJsonPair:= pObj.Get(pName);

  if Assigned(vJsonPair) then
     begin
       //putting the pair at the end of the object
       pObj.RemovePair(pName);
       pObj.AddPair(pName, pJSONValue);
     end
  else
    pObj.AddPair(pName, pJSONValue);
end;

var
  JSONObj, EnderecoObj: TJSONObject;
  JSONString: string;
begin
  // JSON inicial
  JSONString := '{ "usuario": { "nome": "João", "idade": 30, "endereco": { "cidade": "São Paulo", "estado": "SP" } } }';

  // Carregando o JSON
  JSONObj := TJSONObject.ParseJSONValue(JSONString) as TJSONObject;

  try
    // Obtendo o objeto "endereco"
    EnderecoObj := JSONObj.GetValue<TJSONObject>('usuario.endereco');

    if Assigned(EnderecoObj) then
    begin
      // Atualizando a Cidade
      PostValue(EnderecoObj, 'cidade', TJSONString.Create('Rio de Janeiro'));

      // Atualizando o Estado
      PostValue(EnderecoObj, 'estado', TJSONString.Create('RJ'));
    end;

    // Exibindo o JSON atualizado
    Writeln(JSONObj.ToJSON);

    Readln;
  finally
    // Liberando memória
    JSONObj.Free;
  end;

end.

Resultado

Após executar o código, o JSON é atualizado com sucesso, e o resultado final é:

{
  "usuario": {
    "nome": "João",
    "idade": 30,
    "endereco": {
      "cidade": "Rio de Janeiro",
      "estado": "RJ"
    }
  }
}

 

Pontos de Atenção

  • Memória: Sempre libere os objetos JSON criados usando Free para evitar vazamentos de memória.
  • Reutilização: O método PostValue pode ser usado em qualquer parte do seu código para atualizar valores de objetos JSON.
  • Validação: Antes de manipular, sempre verifique se o objeto retornado está atribuindo usando Assigned.

 

 

Conclusão

Com o método PostValue, você pode atualizar objetos JSON no Delphi de forma elegante e eficiente. Essa abordagem é ideal para aplicações que manipulam dados complexos e necessitam de uma forma simples de manter os valores atualizados.

 

 

💬 Gostou do conteúdo? Tem algo a acrescentar?
Deixe seu comentário abaixo! 🤔

Adoraria saber sua opinião sobre como atualizar dados em JSON no Delphi. Se você tem dicas ou dúvidas, compartilhe com a gente! 🚀

🔧 Vamos trocar ideias e aprender juntos!

 

 

💻 Compartilhe o post com outras pessoas se ele te ajudou! 😊

 

 

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até o próximo post. Valeu! 👋📖

 

 

#Delphi #JSON #Programação #Desenvolvimento

#Tecnologia #DicasDeProgramação #Codificando #BancoDeDados

#Desenvolvedor #Tutorial

#GiovaniDaCruz

 

 

Deixe um comentário

Seu e-mail não será publicado.