Estimado me tome la libertad de realizar algunos cambios que creo serán beneficiosos...Si considera que no, los puede desechar.
En mi opinion el código queda mas claro...Bueno eso es una apreciación muy personal...
Código Delphi
[-]
procedure TF_Inicio.btFacturaRapidaClick(Sender: TObject);
var
MainObject, lJNestedObject, lJRestoredObject, ObjArticu, ObjLinea: TJSONObject;
Array_Articu,Array_Linea: TJSONArray;
begin
try
Memo1.Visible := True;
Memo1.Lines.Clear;
Array_Articu := TJSONArray.Create;
F_Data.FDQry.Active := False;
F_Data.FDQry.Sql.Clear;
F_Data.FDQry.Sql.Add('Select * ');
F_Data.FDQry.Sql.Add('from facemi');
F_Data.FDQry.Sql.Add('where fae_entregado =:fae_entregado');
F_Data.FDQry.ParamByName('fae_entregado').AsString:='N';
F_Data.FDQry.Open;
F_Data.FDQry.First;
while not F_Data.FDQry.eof do
begin
ObjArticu := TJSONObject.Create;
ObjArticu.AddPair(TJSONPair.Create('fae_serie',F_Data.FDQry.FieldByName('FAE_SERIE').AsString));
ObjArticu.AddPair(TJSONPair.Create('fae_nro',F_Data.FDQry.FieldByName('FAE_NRO').AsInteger));
F_Data.FDQry1.Active := False;
F_Data.FDQry1.Sql.Clear;
F_Data.FDQry1.Sql.Add('Select * ');
F_Data.FDQry1.Sql.Add('from lifacl');
F_Data.FDQry1.Sql.Add('where lfa_serie =:lfa_serie and ');
F_Data.FDQry1.Sql.Add(' lfa_fnro =:lfa_fnro');
F_Data.FDQry1.Sql.Add('order by lfa_linea asc');
F_Data.FDQry1.ParamByName('lfa_serie').AsString:=F_Data.FDQry.FieldByName('FAE_SERIE').AsString;
ObjArticu.AddPair(TJSONPair.Create('fae_nro',TJSONNumber.Create(FDQry.FieldByName('FAE_NRO').AsInteg er)));
F_Data.FDQry1.Open;
F_Data.FDQry1.First;
Array_Linea := TJSONArray.Create;
while not F_Data.FDQry1.eof do
begin
ObjLinea := TJSONObject.Create;
ObjLinea.AddPair(TJSONPair.Create('lfa_serie',F_Data.FDQry1.FieldByName('LFA_SERIE').AsString));
ObjLinea.AddPair(TJSONPair.Create('lfa_fnro',TJSONNumber.Create(FDQry1.FieldByName('LFA_FNRO').AsInt eger)));
ObjLinea.AddPair(TJSONPair.Create('lfa_linea',TJSONNumber.Create(FDQry1.FieldByName('LFA_LINEA').AsI nteger)));
Array_Linea.Add(ObjLinea);
F_Data.FDQry1.Next;
end;
ObjArticu.AddPair(TJSONPair.Create('lifacl', Array_Linea ) ) ;
Array_Articu.Add(ObjArticu);
F_Data.FDQry.Next;
end;
Memo1.Text := Array_Articu.ToJSON;
Memo1.Text := copy(Memo1.Text,11, length(Memo1.Text)-11);
{$IF DEFINED (WIN32) or DEFINED (WIN64)}
TFile.WriteAllText('jsonfile.json', Array_Articu.ToJSON); {$ENDIF}
RestClient3.BaseURL := servidorWS + 'Facemi/Importar';
RestRequest3.ClearBody; RestRequest3.Body.Add(Array_Articu.ToJSON,TRestContentType.ctAPPLICATION_JSON);
RestRequest3.Execute;
except
on e: exception do
showmessage(e.Message);
end;
end;
Espero que le sea de ayuda u oriente en la solución de su problema....
Saludos cordiales