Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: JSON Wert lesen
8. Jan 2021, 12: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 12:23 Uhr)
|