ITXP365(智码IT网)

分享电脑知识,传播IT技巧

致敬爱学习的您,祝您访问愉快!

Delphi7中使用superobject.pas解析JSON


发布:智码IT网   阅读:
本例JSON数据示例:
{ "class": { "name": "一班", "persons": [ { "name": "zhangsan", "age": "20" }, { "name": "lisi", "age": "18" } ] } }

1、概要
1.1 添加单元引用 uses superobject;
1.2 申明接口对象jo
var
jo: ISuperObject;
1.3 实例化jo
jo := SO(sJsonStr);
1.4 读取
str := jo.O['class'].S['name'];
jArr := jo.O['class'].O['persons'].AsArray();

2、演示简单读取JSON对象的属性值和对象数组的遍历

procedure TForm1.Button1Click(Sender: TObject); var sJsonStr: string; jo, joPerson: ISuperObject; //接口对象申明 jArr: TSuperArray; i: Integer; begin //本例使用的JSON字符串 sJsonStr := ''; sJsonStr := sJsonStr + '{'; sJsonStr := sJsonStr + ' "class":{'; sJsonStr := sJsonStr + ' "name":"一班",'; sJsonStr := sJsonStr + ' "persons":[{"name":"zhangsan","age":"20"},{"name":"lisi","age":"18"}]'; sJsonStr := sJsonStr + ' }'; sJsonStr := sJsonStr + '}'; //实例化对象 jo := SO(sJsonStr);
Memo2.Lines.Clear; //读取JSON对象的Val值 //1、简单读取 Memo2.Lines.Add('班级名称:' + jo.O['class'].S['name']); //2、遍历对象数组 jArr := jo.O['class'].O['persons'].AsArray(); for i := 0 to jArr.Length - 1 do begin joPerson := jArr.N[i]; Memo2.Lines.Add('人员' + IntToStr(i + 1) + '姓名:' + joPerson.S['name']); Memo2.Lines.Add('人员' + IntToStr(i + 1) + '年龄:' + IntToStr(joPerson.I['age'])); end; end;

运行结果如下: 班级名称:一班 人员1姓名:zhangsan 人员1年龄:20 人员2姓名:lisi 人员2年龄:18

3、演示构建JSON对象
procedure TForm1.Button2Click(Sender: TObject); var jo, jo2: ISuperObject; //接口对象申明 begin //实例化对象 jo := SO(); jo2 := SO(); //给jo对象赋值 jo.S['姓名'] := '小王'; //S表示string O表示Object 其它类推.. jo.I['年龄'] := 25; jo.S['性别'] := '男'; jo2.O['人员'] := jo; //得到ISuperObject的具体对象的JSON字符串 Memo2.Lines.Clear; Memo2.Lines.Add('原JSON字符串为:' + jo2.AsString); end;

运行结果:
原JSON字符串为:{"人员":{"性别":"男","年龄":25,"姓名":"小王"}}


4、注意事项:
4.1 joPerson.S['name'] 也可以写成:joPerson['name'].AsString
4.2 运行时可能会遇到的错误:
如果提示错误:Undeclared identifier: 'DecimalSeparator'
即:没有定义DecimalSeparator,将DecimalSeparator修改为FormatSettings.DecimalSeparator
上一篇:没有了
下一篇:没有了

© 2001-智码IT网 www.itxp365.com版权所有

蜀ICP备2021001527号