danilozix 0 Denunciar post Postado Junho 16, 2015 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
danilozix 0 Denunciar post Postado Junho 18, 2015 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