Das gegebene ist ein TJsonObject.
Es enthält das TJsonArray mit dem Namen "data". Das enthält mehrere TJsonObject, welche nur eine TJsonObject "article" enthalten.
Im Endeffekt gibt es zwei Möglichkeiten:
- Du bildest die ganzen Dinge wie z.B. "article" als Delphi-Objekt ab und lässt dir den gesamten Kram als Delphi-Struktur deserialisieren
- Dich interessiert nur etwas wie z.B. "Gib mir einfach nur alle Artikelnamen" und holst dir mit dem Weg des geringsten Widerstandes auf direktem Wege ebendiese Daten
Das einmal als Beispiel, im Endeffekt wie ein Beitrag weiter oben, nur halt lieber mit einem "Path" anstatt mit Zwischen-Variablen:
Delphi-Quellcode:
program Project1;
uses System.SysUtils, System.JSON;
const
JSON = '{ ... }';
var
jsonObj: TJsonObject;
begin
jsonObj := TJSONObject.ParseJSONValue(JSON) as TJsonObject;
var count := jsonObj.GetValue<TJsonArray>('data').Count;
WriteLn('Wir haben ', count, ' Einträge');
for var index := 0 to Pred(count) do
begin
var path := String.Format('data[%d].article.name', [index]);
var articleName := jsonObj.GetValue<String>(path);
WriteLn('Artikel: ', articleName);
end;
ReadLn;
end.