Json(二):JsonDemo

一:现在有Json数据

{ "message":"","data":
{
"name": "张三", /* 注释 */
"age": 33,
"sex": true,
"weight": 123.456,
"tel": ["86-1111111", "86-2222222"],
"addresses":{"address":"A省B市",
"pc":"100001"
} ,
"children": [
{
"name": "张继",
"age": "22",
"sex": true
} ,
{
"name": "张承",
"age": "11",
"sex": false
}
]
}
,"success":true}

二:解析

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, superobject;

type
TForm1
= class (TForm)
btn1: TButton;
mmo1: TMemo;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
btn7: TButton;
btn8: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn6Click(Sender: TObject);
procedure btn7Click(Sender: TObject);
procedure btn8Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
private
JoData,Jo:ISuperObject;
DataStr:
string ;
{ Private declarations }
public
{ Public declarations }
end ;

var
Form1: TForm1;

implementation

// uses superobject;

{ $R *.dfm }

procedure TForm1.btn1Click(Sender: TObject);
begin
ShowMessage(Jo[
' name ' ].AsString);
ShowMessage(Jo[
' age ' ].AsString);
ShowMessage(jo[
' sex ' ].AsString);
ShowMessage(jo[
' weight ' ].AsString);
ShowMessage(jo[
' addresses ' ].AsString);
ShowMessage(jo[
' tel ' ].AsString);
ShowMessage(jo[
' children ' ].AsString);
end ;


procedure TForm1.btn2Click(Sender: TObject);
var
s:
string ;
i: Integer;
d: Double;
b: Boolean;
begin
s :
= jo[ ' name ' ].AsString;
i :
= jo[ ' age ' ].AsInteger;
b :
= jo[ ' sex ' ].AsBoolean;
d :
= jo[ ' weight ' ].AsDouble;

ShowMessage(s);
ShowMessage(IntToStr(i));
ShowMessage(BoolToStr(b, True));
ShowMessage(FloatToStr(d));

s :
= jo.S[ ' name ' ];
i :
= jo.I[ ' age ' ];
b :
= jo.B[ ' sex ' ];
d :
= jo.D[ ' weight ' ];

ShowMessage(s);
ShowMessage(IntToStr(i));
ShowMessage(BoolToStr(b, True));
ShowMessage(FloatToStr(d));
{
jo['name'] 是 jo.O['name'] 的简化形式, 因为它是类的默认数组;
jo.N 类似 jo.O, 区别是 jo.N 在参数不妥时可返回空;
jo.M 和方法有关, 对象中可嵌入方法.
}
end ;


procedure TForm1.btn3Click(Sender: TObject);
begin

ShowMessage(jo[
' addresses.address ' ].AsString);
ShowMessage(jo[
' addresses.pc ' ].AsString);
end ;
procedure TForm1.btn4Click(Sender: TObject);
var
ja: TSuperArray;
begin
ja :
= jo[ ' tel ' ].AsArray;

ShowMessage(IntToStr(ja.Length));
ShowMessage(ja[
0 ].AsString);
ShowMessage(ja[
1 ].AsString);

ja :
= jo[ ' children ' ].AsArray;
ShowMessage(inttostr(ja.length));
ShowMessage(ja[
0 ][ ' name ' ].AsString);
ShowMessage(ja[
1 ][ ' name ' ].AsString);
end ;

procedure TForm1.btn6Click(Sender: TObject);
var
item: ISuperObject;
begin
ShowMessage(jo[
' children ' ].AsJSon(False, False));
// for item in jo[ ' children ' ] do
// ShowMessage(item.AsJSon(False, False));
end ;

procedure TForm1.btn7Click(Sender: TObject);
var
item: TSuperAvlEntry;
begin
ShowMessage(jo.AsObject.GetNames.AsString);
ShowMessage(jo.AsObject.GetValues.AsString);
// ShowMessageFmt( ' Name: %s; Value: %s ' , [jo.AsObject.GetNames, jo.AsObject.GetValues.AsString]);
// for item in jo.AsObject do
// ShowMessageFmt( ' Name: %s; Value: %s ' , [item.Name, item.Value.AsString]);
end ;


procedure TForm1.btn8Click(Sender: TObject);
var
item: TSuperObjectIter;
begin

if ObjectFindFirst(jo, item) then
repeat
ShowMessageFmt(
' key: %s; val: %s ' , [item.key, item.val.AsString]);
until not ObjectFindNext(item);
ObjectFindClose(item);
end ;

procedure TForm1.btn5Click(Sender: TObject);
begin
JoData:
= SO(mmo1.Text);
if JoData[ ' success ' ].AsBoolean then
begin
DataStr:
= JoData[ ' data ' ].AsString;
showmessage(datastr);
Jo:
= so(DataStr);
end ;
end ;

end .
posted on 2011-07-11 17:11  龙七 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Dragon7/archive/2011/07/11/2103239.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值