一:现在有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}
{
"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 .
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 .