Ir para conteúdo

POWERED BY:

Arquivado

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

danilozix

Problema ao gerar arquivo JSON

Recommended Posts

Estou com problema na estrutura do arquivo quando gera uma lista de objetos. Segue abaixo o exemplo.

 

 

{"ecf":"BE050669200009001330","cliente":"000001","fazenda":"0003","dataHoraTerminoTrans":"2015-06-08T15:14:30.000Z","coo":"20711","itensCupom":{"items":[{"produto":"02.060018","descItens":0,"descVal":0,"seqItem":1,"qtdVendida":1,"valUnit":38,"statusItem":"siEmitido"}],"count":1,"arrayManager":{}},"dataHoraInicioTrans":"2015-06-08T15:14:34.000Z","dataEmissao":"2015-06-08T00:00:00.000Z","operador":"73","ccf":"10121","terminal":"","statusCupom":"scEmitido","loja":"01383192000125"}],"count":1,"arrayManager":{}}

 

 

Quando for lista eu não queria que aparecesse essa anotação {"items": e nem "count":1,"arrayManager":{} no final de cada arquivo. Tem alguma configuração ou anotação que remova isso?

 

Estou usando Delphi XE6 com a Unit REST.JsonReflect;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema, utilizei o StringReplace para retirar. A função para transformar o objeto em json ficou assim:

 

function THelper.ObjetoToJson(value: TObject): String;
var lMarshal : TJSONMarshal;
    valorString:String;
    i:integer;
    valor:String;
begin
  lMarshal := TJSONMarshal.Create (TJSONConverter.Create);
  valorString := lMarshal.Marshal(value).ToString();
  valorString := StringReplace(valorString,'{"items":','',[rfReplaceAll, rfIgnoreCase]);
  valorString := StringReplace(valorString,'"arrayManager":{}}','',[rfReplaceAll, rfIgnoreCase]);

 while pos(',"count":',valorString)> 0 do
   begin

     valor:= copy(valorString, pos(',"count":',valorString)+8,4);
     valor := StringReplace(StringReplace(StringReplace(valor,':','',[]),',','',[]),',','',[]);

    if Length(trim(valor))= 1 then
      valorString := StringReplace(valorString,copy(valorString, pos(',"count":',valorString)+0,11),'',[])
    else if Length(trim(valor))= 2 then
      valorString := StringReplace(valorString,copy(valorString, pos(',"count":',valorString)+0,12),'',[])
    else if Length(trim(valor))= 3 then
     valorString := StringReplace(valorString,copy(valorString, pos(',"count":',valorString)+0,13),'',[]);    
   end;

  result := valorString;
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.