JSON 之 SuperObject(9): TSuperType



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.


 
   

你可能感兴趣的:(object)