unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses SuperObject; //类型 procedure TForm1.Button1Click(Sender: TObject); function GetJsonType(I: ISuperObject): string; begin case I.DataType of stNull: Result := 'stNull'; stBoolean: Result := 'stBoolean'; stDouble: Result := 'stDouble'; stInt: Result := 'stInt'; stObject: Result := 'stObject'; stArray: Result := 'stArray'; stString: Result := 'stString'; stMethod: Result := 'stMethod'; end; end; var jo: ISuperObject; begin jo := SO('{A:1, B:2}'); ShowMessage(GetJsonType(jo)); {stObject} jo := SO; ShowMessage(GetJsonType(jo)); {stObject} jo := SO('abc'); ShowMessage(GetJsonType(jo)); {stString} jo := SO(123); ShowMessage(GetJsonType(jo)); {stInt} jo := SO('123'); ShowMessage(GetJsonType(jo)); {stInt} jo := SO(3.14); ShowMessage(GetJsonType(jo)); {stDouble} jo := SO('3.14'); ShowMessage(GetJsonType(jo)); {stDouble} jo := SO(False); ShowMessage(GetJsonType(jo)); {stBoolean} jo := SO('[1,2,3,a,b,c]'); ShowMessage(GetJsonType(jo)); {stArray} jo := TSuperObject.Create(stMethod); ShowMessage(GetJsonType(jo)); {stMethod} jo := SO('null'); ShowMessage(GetJsonType(jo)); {stNull} end; //判断 procedure TForm1.Button2Click(Sender: TObject); var jo: ISuperObject; begin jo := SO('[]'); if jo.DataType = stArray then ShowMessage('stArray'); if ObjectIsType(jo, stArray) then ShowMessage('stArray'); end; end.