Ir para conteúdo

POWERED BY:

Arquivado

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

danilozix

Método para converter Json para uma lista de Objetos

Recommended Posts

Boa tarde pessoal, preciso de um método que converta um arquivo json para uma lista de objetos. Estou tentando utilizar o método UnMarshal da unit REST.JsonReflect, porém ele não esta conseguindo reconhecer o arquivo json. Eu estou pegando esse json de um web service java, eu creio que o erro ocorre porque o delphi não consegue reconhecer o arquivo json sem algumas anotações que geralmente um arquivo json gerado pelo delphi contem.

 

Obs: Delphi XE6.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema, fiz um método genérico que pode receber qualquer tipo de lista.

function THelper.JsonListObjeto(jsonString: String; classe: TClass): TList<TObject>;
var lista:Tlist<TObject>;
    jo: TJSONObject;
    obj: TObject;
    jl: TJSONArray;
    i:integer;
    unMarshal: TJSONUnMarshal;
begin
  lista := TList<TObject>.Create;
  jo := TJSONObject.Create;
  obj := TObject.Create;
  jl := TJSONArray.Create;
  unMarshal := TJSONUnMarshal.Create;

 jl := TJSONObject.ParseJSONValue(jsonString) as TJsonArray;

 if Assigned(jl) then
  begin
    for i := 0 to jl.Count -1 do
      begin
        jo := jl.Items[i] as TJSONObject;
        obj :=   unMarshal.CreateObject(classe,jo);
        lista.Add(obj);
      end;
  end;

  result := lista;
end;

Depois basta chamar a função:

procedure TformPrincipal.Button10Click(Sender: TObject);
var  helper: THelper;
     jsonString: string;
     lista:Tlist<TCliente>;
begin
    helper := THelper.Create;
    lista := TList<TCliente>.Create;
    jsonString := memo1.Text;// RECEBE UM JSON
    lista := TList<TCliente>(helper.JsonListObjeto(jsonString,TCliente)) ;
end;

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.