Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: JSON -> Database -> Auswertung ?

  Alt 6. Mai 2022, 14:21
Update :

Über RTTI besorge ich mir die Namen aller Properies meiner Klasse als Stringliste.
Diese Stringliste übergebe ich dann an meine JSON Auswerte + CSV File schreibe funktion.

Eine dynamische Ermittlung alle Namen aus dem JSON File wäre besser (flexibler) für mich.
Wer ähnliche Ausfgaben hat kann hier gerne auch was posten , aktuell bin ich einen Schritt weiter.





Delphi-Quellcode:

procedure TMyForm.ShowJSONarraylistUsingProperties
  (sLst: TStringlist; csvfilename: String);
var
  jsArr: TJSONArray;
  originalObject: TJsonObject;
  jsPair: TJsonPair;
  jsObj: TJsonObject;
  JsVAl: TJsonValue;
  i: Integer;
  Singleline: string;
  HeaderCSV: string;
  DataCSV: string;

  csvfile: TStringlist;
begin

  csvfile := TStringlist.Create;
  try

    JsVAl := TJsonObject.ParseJSONValue(FJSONStr);

    // value as object
    originalObject := JsVAl as TJsonObject;

    // get pair, wich contains Array of objects
    jsPair := originalObject.Get('listHelper');

    // pair value as array
    jsArr := jsPair.jsonValue as TJSONArray;

    // writeln('array size: ', jsArr.Size);
    // enumerate objects in array
    for i := 0 to jsArr.Size - 1 do
    begin
      LogMemo.Lines.Add('element ' + IntTostr(i));
      // i-th object
      jsObj := jsArr.Get(i) as TJsonObject;

      HeaderCSV := '';
      DataCSV :='';


      // enumerate object fields
      for jsPair in jsObj do
      begin
        if (sLst.IndexOf(jsPair.JsonString.Value) > 0) then
        begin
          Singleline := Singleline + ' [' + jsPair.JsonString.Value + ' : ' +
            jsPair.jsonValue.Value + '] ';
          HeaderCSV := HeaderCSV + jsPair.JsonString.Value+ '; ';
          DataCSV := DataCSV + jsPair.jsonValue.Value + '; ';
        end;
      end;

      if i = 0 then
        csvfile.Add(HeaderCSV);

      csvfile.Add(DataCSV);

      LogMemo.Lines.Add(Singleline);

    end;

  finally
    csvfile.SaveToFile(csvfilename);

    csvfile.Free;
  end;
end;

Geändert von bernhard_LA ( 6. Mai 2022 um 14:25 Uhr)
  Mit Zitat antworten Zitat