Série da semana: Buscas semânticas com Elasticsearch

Veja mais

Geração de chaves JSON (DataSnap Delphi);

09/11/2018

Bom dia Pessoal, estou estudando e tentando desenvolver uma aplicação datasnap onde eu possa disponibilizar os meus dados para outro software web através do json.

Estou com algumas dúvidas quanto a geração de chaves no Delphi para JSON.

Meu select gera está tabela:

+-----------+---------+
| nome | salario |
+-----------+---------+
| Pedro | 5000 |
| Marcos | 2000 |
| Ana | 8000 |
| Jaqueline | 3000 |
+-----------+---------+

Meu JSON está saindo assim:

{"result":[{"nome":"Pedro","salario":"2000","nome":"Ana","salario":"3000"}]}.


Como podem perceber, ele não está pegando o salario correto do Pedro, alem de mostrar menos registros do que a minha tabela possui e ao terminar o "nome" : "salario". Como eu faço para gerar outro par de chaves? {}

Segue Código

function TServerMethods1.GetSalarios: TJsonObject;
Var
  FDQuery : TFDQuery;
  LJSONObject : TJsonObject;
  I: Integer;
  NomeColuna, ValorColuna : String;
begin
 FDQuery := TFDQuery.Create(nil);
 try
   FDQuery.Connection := cnnConexao;
   FDQuery.SQL.Add(''select nome, salario from funcionarios'');
   FDQuery.Active := True;
   FDQuery.First;
   LJSONObject := TJsonObject.Create;
   while (not FDQuery.Eof) do
   begin
      for I := 0 to FDQuery.FieldDefs.Count -1 do
      begin
        NomeColuna  := FDQuery.FieldDefs[I].Name;
        ValorColuna := FDQuery.FieldByName(NomeColuna).AsString;
        LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create(NomeColuna),TJSONString.Create(ValorColuna)));
        FDQuery.Next;
      end;
   end;
 finally
  FDQuery.Free;
  Showmessage(LJSONObject.ToString);
 end;
 Result := LJSonObject;
end;


Desde já Agradeço!