DataSnap 2010 – Enviando e recebendo ARRAY de objetos
Dando sequência ao tema transferência de objetos com DataSnap o qual iniciei escrevendo sobre a transferência de um simples objeto, o qual é pré-requisito para entender este artigo, neste post descrevo como transferir uma lista (Array) de objetos.
Como já mencionei todo o envio e retorno de objetos em DataSnap deve ser feito através de JSON, no caso de retorno de uma lista de objetos devemos retornar um TJSONArray, o qual terá uma lista de TJSONObject.
Abaixo a implementação de uma função o qual retorna uma array de TCustomer.
function TServerMethods2.ListofCustomer: TJSONArray;
var
I: Integer;
myCustomer: TCustomer;
begin
Result := TJSONArray.Create;
for I := 0 to 20 do
begin
myCustomer := GetCustomer;
myCustomer.Name := 'Customer ' + IntToStr(i);
myCustomer.Age := i;
Result.AddElement(CustomerToJSON(myCustomer));
end;
end;
Repare que cada elemento do Array é transformado de TCustomer para TJSONValue, o que requer no lado cliente a conversão de TJSONValue para TCustomer, abaixo um exemplo
var
proxy: TServerMethods2Client;
mySingleCustomer: TCustomer;
allCustomers : TJSONArray;
i: Integer;
begin
try
proxy := TServerMethods2Client.Create(SQLConnection1.DBXConnection);
allCustomers := proxy.ListofCustomer;
for i := 0 to allCustomers.Size -1 do
begin
mySingleCustomer := JSONToCustomer(allCustomers.Get(i));
MMCustomer.Lines.Add(mySingleCustomer.ToString);
mySingleCustomer.Free;
end;
finally
proxy.Free;
end;
end;
No próximo post vamos abordanar o tema relacionado ao retorno de objetos complexos.
Download do código fonte










Developer Network
1 Comments
[...] No caso to TJSONObject foi utilizado o método ToString o qual retorna a representação do objeto em formato JSON, através da classe TJSONUnMarshal convertermos para TCustomer, esta conversão foi tratada no posto anterior. [...]