Problema ao gerar arquivo JSON
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;
{"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;
Danilo Pereira
Curtidas 0
Respostas
Danilo Pereira
16/06/2015
Consegui resolver o problema, descobri que esses valores são gerados quando se usa o TList para gerar lista de objetos, uma solução seria trocar para o TArray. Mas consegui retirar esses valores utilizando o StringReplace. Segue abaixo como ficou a função:
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;
GOSTEI 0