Nachdem der Versuch größere Datenmengen von einer Webseite zu parsen nicht wirklich zufriedenstellend war, will jetzt versuchen das über JSON zu realisieren.
Dazu habe ich die Unit SuperObject von http://www.progdigy.com/ installiert.
Es sollte angeblich ganz einfach sein, allerdings bekomme ich da irgendwie
keinen Ansatz.
Ich hatte da irgendwo ein Beispiel gefunden wie JSON-Daten damit eingeladen werden und das Beispiel funktioniert auch ganz gut, allerdings finde ich nicht heraus wie ich das für "meine" Daten anpassen muß.
Hat jemand Erfahrung mit JSON oder vielleicht sogar mit diesem SuperObject?
Ich habe hier mal das Beispiel mit den originalen Daten und meinen Daten angehängt.
Gruß
Michael
Code: Alles auswählen
uses SuperObject;
var
s: string;
o: ISuperObject;
i: Integer;
begin
//Beispiel Daten
{
s := '{ "accounting" : [ ' +
'{ "firstName" : "John", ' +
'"lastName" : "Doe", ' +
'"age" : 23 }, ' +
'{ "firstName" : "Mary", ' +
'"lastName" : "Smith", ' +
'"age" : 32 } ' +
'] }';
}
//Reale Daten
s:=' { "cgi_json_version": "1.4.0",'+
'"status": {'+
'"service_status": ['+
'{ "host": "Netbook", '+
'"service": "Memory Usage", '+
'"status": "CRITICAL", '+
'"last_check": "03-07-2011 19:44:08", '+
'"duration": "3d 8h 27m 35s", '+
'"attempts": "3/3", '+
'"status_information": "Keine Route zum Zielrechner"},'+
'{ "host": "Netbook", '+
'"service": "NSClient++ Version", '+
'"status": "CRITICAL", '+
'"last_check": "03-07-2011 19:41:58", '+
'"duration": "3d 8h 26m 23s", '+
'"attempts": "3/3", '+
'"status_information": "Keine Route zum Zielrechner"},'+
'{ "host": "Netbook", '+
'"service": "Uptime", '+
'"status": "CRITICAL", '+
'"last_check": "03-07-2011 19:43:16", '+
'"duration": "3d 8h 25m 11s", '+
'"attempts": "3/3", '+
'"status_information": "Keine Route zum Zielrechner"}'+
']'+
'}'+
'}';
//Beispiel Daten funktionieren
//o := SO(s).o['accounting'];
//Reale Daten funktionieren nicht
o := SO(s).o['service_status'];
//erst einmal alle Daten auf einmal anzeigen
for i := 0 to o.AsArray.Length - 1 do begin
ShowMessage(o.AsArray[i].AsString);
end;
end;