AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JSON Wert lesen

Ein Thema von IMPEGA · begonnen am 8. Jan 2021 · letzter Beitrag vom 8. Jan 2021
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: JSON Wert lesen

  Alt 8. Jan 2021, 11:03
Welche Art denn? Sowohl data als auch art sind jeweils JSON-Arrays mit 0 bis X Elementen, demzufolge kann es auch 0 bis X Arten geben.

[edit] Hilft Dir das hier weiter? Nur schnell heruntergeschludert, normalerweise würde ich das auf mehrere Parsing-Methoden herunterbrechen.
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  lJSON: TJSONObject;
  lInnerJSON: TJSONObject;
  Arr: TJSONArray;
  lInnerArr: TJSONArray;
  lArt: TJSONObject;
  Value: TJSONValue;
  i, j: integer;
  lID: string;
  lStatus: string;
  lChanged: string;
begin
  // Das gesamte JSON-Objekt
  lJSON := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
  try
    Value := lJSON.Values['js'];
    if Assigned(Value) and (Value is TJSONObject) then
      begin
        // Das js-Objekt
        lInnerJSON := TJSONObject(Value);
        Value := lInnerJSON.Values['data'];
        if Assigned(Value) and (Value is TJSONArray) then
          begin
            // Das data-Array
            Arr := TJSONArray(Value);
            for i := 0 to Arr.Count - 1 do
              if Arr.Items[i] is TJSONObject then
                begin
                  // Die einzelnen Objekte im data-Array
                  lInnerJSON := TJSONObject(Arr.Items[i]);
                  Value := lInnerJSON.Values['art'];
                  if Assigned(Value) and (Value is TJSONArray) then
                    begin
                      // Das art-Array je data-Objekt
                      lInnerArr := TJSONArray(Value);
                      for j := 0 to lInnerArr.Count - 1 do
                        if lInnerArr.Items[j] is TJSONObject then
                          begin
                            // Das gesuchte Objekt innerhalb des art-Arrays
                            lArt := TJSONObject(lInnerArr.Items[j]);
                            if not lArt.TryGetValue<string>('id', lID) then
                              lID := '';
                            if not lArt.TryGetValue<string>('status', lStatus)
                            then
                              lStatus := '';
                            if not lArt.TryGetValue<string>('changed', lChanged)
                            then
                              lChanged := '';
                            ShowMessage
                              (Format('ID: %s, Status: %s, Changed: %s',
                              [lID, lStatus, lChanged]));
                          end;
                    end;
                end;
          end;
      end;
  finally
    lJSON.Free;
  end;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 8. Jan 2021 um 11:23 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz