JSON Array iterieren (durchsuchen)

Rund um die LCL und andere Komponenten
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

JSON Array iterieren (durchsuchen)

Beitrag von JosefKoller »

Hallo,

ich blicke mit dieser JSON Geschichte nicht recht durch.

Ich bekomme mit
response := TStringStream.Create(resultstring);
with THTTPSend.Create do
HttpPostURL('http://test.de'+'/orderall.php', inputstring,
response);
response ein JSON Array, gefüllt mit dem Ergebnis auf dem php Script.

Dieses response weise ich folgendermaßen zu:
var
so:TJSONParser;
o: TJSONData;
begin
so:=TJSONParser.Create(response);
so.UseUTF8;
o:=so.Parse;
Ich weiß jetzt nicht, wie ich mit o (= TJSONData) die "Wertepaare auslese.

Das Array sieht so aus:
[{"ord_id":"135","0":"135","ord_forid":"1","1":"1","ord_datum":"2013-09-22 13:49:40.000","2":"2013-09-22 13:49:40.000","ord_firma":"","3":"","ord_sel_anrede":"Herr","4":"Herr","ord_vorname":"Johannes","5":"Johannes","ord_nachname"
...
Wie man sieht, sind die Werte doppelt vorhanden ord_id:"135" und dann nochmal 0:"135"

Wie kann ich denn jetzt das Array durchlaufen, um alle Wertepaare z. B. ord_id und dessen Wert zu bekommen?

Besten Dank

Josef

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: JSON Array iterieren (durchsuchen)

Beitrag von theo »

Z.B. so

Code: Alles auswählen

for i:=0 to TJSONArray(Data).Count-1 do ShowMessage(TJSONArray(Data)[i].FindPath('ord_id').Value);    

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: JSON Array iterieren (durchsuchen)

Beitrag von JosefKoller »

Hmmh...
for i:=0 to TJSONArray(Data).Count-1 do ShowMessage(TJSONArray(Data).FindPath('ord_id').Value);


Ich habe:

so:=TJSONParser.Create(response); ( = so:TJSONParser;)
so.UseUTF8;
o:=so.Parse; ( = o: TJSONData;)


ich nehme an, daß ich Data in Deinem Code mit "o" ersetzen muß.
Nur, in der Variante mit "o" als Data gibt es kein FindPath.

Vielleicht könntest mir da noch auf die Sprünge helfen.

Danke

Josef

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: JSON Array iterieren (durchsuchen)

Beitrag von theo »

Code: Alles auswählen

var  Data: TJSONObject;      
....
 Data:=TJSONObject(o);      

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: JSON Array iterieren (durchsuchen)

Beitrag von JosefKoller »

Danke für Deine Mühe.

Aber es wird einfach kein FindPath gefunden.

Compilermeldung:
aufueber.pas(1385,39) Error: identifier idents no member "FindPath"
Als units sind jsonparser, fpjson eingebunden.

Danke nochmals

Josef

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: JSON Array iterieren (durchsuchen)

Beitrag von theo »

Was hast denn du für eine Compiler Version?
FindPath müsste seit 2 Jahren drin sein:
http://svn.freepascal.org/cgi-bin/viewv ... 6&r2=25691

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: JSON Array iterieren (durchsuchen)

Beitrag von JosefKoller »

Hallo,

dürfte nicht zu alt sein.

Lazarus 1.3
r45478
FPC 2.6.2
i386-win32-win32/win64

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: JSON Array iterieren (durchsuchen)

Beitrag von theo »

FPC 2.6.2 ist von Feb 2013, also zu alt.
Stable ist im Moment FPC 2.6.4
http://www.lazarus-ide.org/index.php?page=downloads

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: JSON Array iterieren (durchsuchen)

Beitrag von JosefKoller »

Danke.

Bin grad am Installieren und somit "arbeitslos". Deswegen noch eine Frage:

Geschickt wäre es, wenn ich das JSON Array gleich in ein Dataset packen könnte.

Gibt es sowas?

Ich hoffe, ich fall Dir mit meiner Fragerei nicht allzu sehr auf die Nerven.

Josef

Antworten