DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como procurar uma informação em um Json?

Procurar valores em Json com o Delphi

Fala galera do Show Delphi, tudo beleza?

Trabalhar com arquivos JSON é uma tarefa cada vez mais comum e necessária na atualidade e o Delphi nos oferece várias funções prontas.

 

Vamos considerar o seguinte Json para exemplo:

 [                              
   {                            
     "usuario 1":{              
       "username":"aaa",        
       "email":"aaa@gmail.com"  
     }                          
   },                           
   {                            
     "usuario 2":{              
       "username":"bbb",        
       "email":"bbb@gmail.com"  
     }                          
   }                            
 ]

Veja que neste exemplo temos um json array que tem em cada registro um identificador e uma lista dos seus campos e valores.

Chave: usuario 1
Campos:
username: aaa
email: aaa@gmail.com

 

Chave: usuario 2
Campos:
username: bbb
email: bbb@gmail.com

 

Legal, e como buscar de modo fácil e rápido o e-mail do usuario 2, por exemplo?

 

Função para procurar informações no JSON

function getData(JsonString: String; Node: String; Field: String): String;
var
  JSonValue: TJSonValue;
  JsonArray: TJSONArray;
  ArrayElement: TJSonValue;
  FoundValue: TJSonValue;
begin
  Result :='';
 
  // create TJSonObject from string
  JsonValue := TJSonObject.ParseJSONValue(JsonString);
 
  // get the array
  JsonArray := JsonValue as TJSONArray;
 
  // iterate the array
  for ArrayElement in JsonArray do
  begin
    FoundValue := ArrayElement.FindValue(Node);
    if FoundValue <> nil then
    begin
      Result := ArrayElement.GetValue(Node + '.' + Field);
      Break;
    end;
  end;
end;

Com o código acima fica muito fácil procurar informações no JSON, veja abaixo um exemplo completo.

Código Completo Buscando informações do JSON

unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TMomo1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Momo1: TMomo1;
 
implementation
 
{$R *.dfm}
 
uses
  System.Json;
 
function getData(JsonString: String; Node: String; Field: String): String;
var
  JSonValue: TJSonValue;
  JsonArray: TJSONArray;
  ArrayElement: TJSonValue;
  FoundValue: TJSonValue;
begin
  Result :='';
 
  // create TJSonObject from string
  JsonValue := TJSonObject.ParseJSONValue(JsonString);
 
  // get the array
  JsonArray := JsonValue as TJSONArray;
 
  // iterate the array
  for ArrayElement in JsonArray do
  begin
    FoundValue := ArrayElement.FindValue(Node);
    if FoundValue <> nil then
    begin
      Result := ArrayElement.GetValue(Node + '.' + Field);
      Break;
    end;
  end;
end;
 
procedure TMomo1.Button1Click(Sender: TObject);
begin
  Memo1.Text :=
  ' [                              '+
  '   {                            '+
  '     "usuario 1":{                      '+
  '       "username":"aaa",        '+
  '       "email":"aaa@gmail.com"  '+
  '     }                          '+
  '   },                           '+
  '   {                            '+
  '     "usuario 2":{                      '+
  '       "username":"bbb",        '+
  '       "email":"bbb@gmail.com"  '+
  '     }                          '+
  '   }                            '+
  ' ]                              ';
 
 
  { Buscando o conteúdo do campo email do registro usuário 1 }
  ShowMessage(getData(Memo1.Text, 'usuario 1', 'email'));
 
  { Buscando o conteúdo do campo username do registro usuário 2 }
  ShowMessage(getData(Memo1.Text, 'usuario 2', 'username'));
end;
 
end.

 

Com estes códigos a nossa vida fica muito mais fácil.

 

Beleza pessoal? Espero que o post ajudem vocês!

 

Poste nos comentários as suas dúvidas e sugestões!

 

Um abraço e até o próximo post. Valeu!

 

Fonte base: https://stackoverflow.com/questions/46534011/delphi-parse-json-array-or-array

Facebook Comments Box
  • Giovani Da Cruz
  • 620 views
  • 0 comentários
  • 27 de agosto de 2023

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados