Java, PHP und andere Sprachen verfügen über ausgereifte Frameworks zum Parsen von JSON-Daten, die es uns ermöglichen, formatierte JSON-Daten mit sehr wenig Code in Objekte oder Attribute umzuwandeln, die vom Programm erkannt werden können Komponenten in Delphi implementieren. Wenn Sie diese Komponente noch nicht haben, suchen Sie sie bitte online und laden Sie sie herunter oder hinterlassen Sie Ihre E-Mail-Adresse im Nachrichtenfeld unten, um sie bei mir anzufordern.
Lassen Sie uns zunächst über einige häufig verwendete Funktionen in ISuperObject sprechen.
Funktion SO(const s: SOString = '{}'): ISuperObject; Überladung; Diese Funktion übergibt die JSON-Datenzeichenfolge und gibt ein ISuperObject-Objekt zurück, das wir beim Parsen von JSON verwenden, z. B. jObj: =SO (jsonstr).
property O[const path: SOString]: ISuperObject read GetO write PutO; default Zum Beispiel: jobj.O['username'], diese Funktion wird von einem ISuperObject-Objekt aufgerufen, die Zeichenfolge in eckigen Klammern ist der Feldname in json, hat ein ISuperObject-Objekt zurückgegeben.
property S[const path: SOString]: SOString read GetS write PutS; Diese Funktion wird von einem ISuperObject-Objekt aufgerufen, sie gibt einen SoString zurück, also einen String jObj.S['Benutzername']; Ebenso gibt es mehrere andere ähnliche Funktionen, z. B. I['age'] gibt eine Ganzzahl zurück, B['isenable'] gibt einen booleschen Typ zurück und A['users'] gibt ein TSuperArray-Array zurück.
Die Funktionen AsString, AsBoolean, AsInteger, AsArray und ISuperObject werden verwendet, um ISuperObject in den entsprechenden Datentyp zu konvertieren.
Schauen wir uns unten einen Democode an. Die JSON-Daten lauten wie folgt
{ "retcode": "1", "datafrom": "server", "users": "[{/"id/":1, /"username/": /"liuderu/", /"website/": /"bcoder.com/"},{/"id/":2, /"username/": /"Jeoe/", /"website/": /"baidu.com/"}]"}Delphi Version 2010, der Code lautet wie folgt:
unit uFmMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, StdCtrls, ComCtrls, Buttons, superobject;type TFmMain = class(TForm) Memo1: TMemo; ListView1: TListView; Label1 : TLabel; Prozedur BitBtn1Click(Sender: TObject); private { Private Deklarationen } public { Öffentliche Deklarationen } end;var FmMain;implementation{$R *.dfm}procedure TFmMain.BitBtn1Click(Sender: TObject);var jRet, jUsers: ISuperObject; : TSuperArray; retCode: integer; strUsers: string; i: integer;begin jRet := SO(Memo1.Text); if (jRet.O['retcode'] <> nil) then begin retCode := jRet.O['retcode'].AsInteger; .Caption := 'Rückgabewert:' + IntToStr(retCode) + '; Datenquelle:' + jRet.O['datafrom'].AsString; if(jRet.O['retcode'].AsInteger = 1) then begin strUsers := jRet.O['users'].AsString; aryUsers := jUsers.AsArray; für I := 0 bis aryUsers.Length - 1 beginnen mit ListView1.Items.Add do begin Caption := aryUsers[i].O['id'].AsString; SubItems.Add(aryUsers[i].O['username'].AsString); ].O['website'].AsString); end;end;end.Ein einfaches Beispiel dafür, wie Delphi ISuperObject zum Parsen von JSON verwendet: Delphi_Json_jb51.rar