DataSnap 2010 – enviando e recebendo ARRAY de strings, numbers e outros tipos
Dando sequência ao tema transferência de objetos com DataSnap o qual iniciei escrevendo sobre a transferência de um simples objeto, e depois sobre o envio de array objetos, agora vamos descrever como enviar array que contenha tipos distintos.
Para retornar tipos String, Integer, Double, Real, Boolean e outros tipos, utilizamos a classe TJSONValue que serve como base para as classes TJSONString, TJSONNumber, TJSONTrue, TJSONFalse, TJSONNull e TJSONObject. O retorno de uma lista destes tipos é representando pelo TJSONArray, comentando no meu post anterior.
Abaixo exemplo de um ServerMethod que retorna um TJSONArray o qual contém vários items, cada um deles de tipos diferentes.
function TDSServerMethods.ListofDifferentTypes: TJSONArray;
var
strval: TJSONString;
trueval : TJSONTrue;
falseval : TJSONFalse;
numval: TJSONNumber;
objval : TJSONObject;
begin
Result := TJSONArray.Create;
strval := TJSONString.Create('Return String value from DataSnap Server');
Result.AddElement(strval);
numval := TJSONNumber.Create(100);
Result.AddElement(numval);
numval := TJSONNumber.Create(99.99);
Result.AddElement(numval);
trueval := TJSONTrue.Create;
Result.AddElement(trueval);
falseval := TJSONFalse.Create;
Result.AddElement(falseval);
Result.AddElement(CustomerToJSON(GetCustomer));
end;
Agora basta acessar o método através da aplicação cliente o qual será capaz de reconhecer todos os tipos de objetos aqui enviados.
var
proxy: TDSServerMethodsClient;
mySingleValue: TJSONValue;
allValues: TJSONArray;
i: Integer;
begin
proxy := nil;
try
proxy := TDSServerMethodsClient.Create
(DMClientContainer.MyDSServer.DBXConnection);
allValues := proxy.ListofDifferentTypes;
for i := 0 to allValues.Size - 1 do
begin
mySingleValue := allValues.Get(i);
if mySingleValue is TJSONString then
MMLog.Lines.Add('TJSONString value ' + mySingleValue.Value)
else if mySingleValue is TJSONNumber then
MMLog.Lines.Add('TJSONNumber value ' + mySingleValue.Value)
else if mySingleValue is TJSONTrue then
MMLog.Lines.Add('TJSONTrue value ' + mySingleValue.ToString)
else if mySingleValue is TJSONFalse then
MMLog.Lines.Add('TJSONFalse value ' + mySingleValue.ToString)
else if mySingleValue is TJSONObject then
MMLog.Lines.Add('TJSONObject value ' + mySingleValue.ToString);
end;
finally
proxy.Free;
end;
end;
Ao executar o retorno será:
TJSONString value Return String value from DataSnap Server
TJSONString value 100
TJSONString value 99.99
TJSONTrue value true
TJSONFalse value false
TJSONObject value {“type”:”Customer.TCustomer”,”id”:1,”fields”:{“FName”:”Andreano Lanusse”,”FAge”:32,”FMaritalStatus”:”msMarried”}}
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.
Download do código fonte










Developer Network
0 Comments
You can be the first one to leave a comment.