JSON 之 SuperObject(2): 构建方式与 AsJSon


SuperObject 构建一个 JSON 的常用方法: 从字符串、从文件、从流.


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses SuperObject;



const JsonStr = '{"No1":"张三", "No2":"李四"}';



//从字符串构建

procedure TForm1.Button1Click(Sender: TObject);

var

  jo: ISuperObject;

begin

  jo := SO(JsonStr);

  {或者用使用下面语句, SO 函数就是调用了 TSuperObject.ParseString}

  //jo := TSuperObject.ParseString(JsonStr);

  ShowMessage(jo.AsJSon(True, False));

end;



//从文件构建

procedure TForm1.Button2Click(Sender: TObject);

const

  path = 'c:\temp\json.txt';

var

  jo: ISuperObject;

begin

  {产生个测试文件; SuperObject 对中文支持也不太好, 读取它自己保存的文件吧}

  SO(JsonStr).SaveTo(path); {这就产生并保存了 json 文件}



  jo := TSuperObject.ParseFile(path);

  ShowMessage(jo.AsJSon(True, False));

end;



//从流构建

procedure TForm1.Button3Click(Sender: TObject);

var

  jo: ISuperObject;

  stm: TStream;

  b: Byte;

begin

  {模拟个测试流; 看看它能接受的编码够原始的, 它存取文件也是如此}

  stm := TStringStream.Create('{"No2":"\u674e\u56db","No1":"\u5f20\u4e09"}');



  jo := TSuperObject.ParseStream(stm);

  ShowMessage(jo.AsJSon(True, False));



  stm.Free;

end;



//AsJSon 的参数

procedure TForm1.Button4Click(Sender: TObject);

var

  jo: ISuperObject;

begin

  jo := SO(JsonStr);



  ShowMessage(jo.AsJSon);

  ShowMessage(jo.AsJSon(True));

  ShowMessage(jo.AsJSon(True, False));

  ShowMessage(jo.AsJSon(False, False));

end;



end.


 
   

你可能感兴趣的:(object)