龙七

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

构建一个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.
posted on 2011-07-11 17:16  龙七  阅读(591)  评论(0编辑  收藏  举报