Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maneju

Converter JSON to OBJECT

Recommended Posts

Olá!

Tenho uma rotina que faz a conversão JsonObjeto e o contrário também. Tenho usado esta rotina sem problemas com datasnap, porém agora que estou implementando para Android estou com a mensagem de erro "Internal: Cannot instantiate type...". Acredito ser por causa do uso de RRTI mas não consegui achar a solução para isso.

Função:

{==========================================
 Converte JSON para Objeto
 ==========================================}
class function TJsonUtil.JSONToObject<T>(AJSON: TJSONValue): T;
begin
   if AJSON is TJSONNull then
      Exit(nil);
 
   if not Assigned(JSONUnMarshal) then
      JSONUnMarshal := TJSONUnMarshal.Create;
 
   result := T(JSONUnMarshal.UnMarshal(AJSON));
 
end;

No FireMonkey:

procedure TForm3.FormCreate(Sender: TObject);
var
   oProxy   : TSMClient;
   ajsn     : TJSONArray;
   consulta : TConsultaMobile;
begin
   try
      ajsn     := TJSONArray.Create;
      ajsn     := oProxy.buscarMobileConsultas;
 
      if ajsn.Count > 0 then
         begin
            consulta := TConsultaMobile.Create;
             
            //Aqui é onde ocorre o erro
            consulta := TJsonUtil.JSONToObject<TConsultaMobile>(ajsn.Items[0]);
 
            FreeAndNil(consulta);
         end
      else
         begin
           
      end;
   finally
      oProxy.Free; 
   end;
end;

PS - Delphi XE 6

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.