dicas show delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais
sombra
Artigos Show Delphi

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais
sombra
iniciantes show delphi

INICIANTES

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

Saiba mais
sombra
downloads show delphi

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
sombra
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":"[email protected]"  
     }                          
   },                           
   {                            
     "usuario 2":{              
       "username":"bbb",        
       "email":"[email protected]"  
     }                          
   }                            
 ]

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: [email protected]

 

Chave: usuario 2
Campos:
username: bbb
email: [email protected]

 

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":"[email protected]"  '+
'     }                          '+
'   },                           '+
'   {                            '+
'     "usuario 2":{                      '+
'       "username":"bbb",        '+
'       "email":"[email protected]"  '+
'     }                          '+
'   }                            '+
' ]                              ';
 
 
{ 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!

 

 

Uma versão mais completa pode ser encontrado no blog Giovani Da Cruz

Como Procurar uma Informação em um JSON no Delphi

 

 

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

  • Giovani Da Cruz
  • 0 comentários
  • 27 de agosto de 2023

Deixe um comentário

Ir ao topo

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