打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi 2010 XE 中使用 JSON 之 SuperObject
JSON
SuperObject(1)
一直盼着
Delphi
能够直接支持
"
正则表达式
"
"JSON";
Delphi 2009
刚来的时候
,
有了
JSON,
但不好
,
那时尝试过一点
.
这是以前的链接
:
什么是
JSON?
Delphi
2010
带了两个相关单元
:
DBXJSON
DBXJSONReflect
貌似很强大
,
但主要是给
DataSnap
准备的
;
尝试了半天
,
也很失望
:
可能给
DataSnap
网络数据传递够用了
,
但太简陋了
,
好像是没写完
,
对中文支持也
有问题
.
我想不等了
,
找第三方吧
,
真的找到了惊喜
: JSON
SuperObject v1.1(
简介、下载
), Henri Gourvest
的大作
!
里面还有
XML
相关的一个单元
,
慢慢看吧
.
先来个简单测试
:
//SuperObject
提倡使用接口
; ParseString
TSuperObject
类的
Class
方法
var
jo: ISuperObject;
begin
jo := TSuperObject.ParseString('{"No1":"
张三
", "No2":"
李四
"}');
ShowMessage(jo['No1'].AsString); {
张三
}
jo := SO('{"No1":"
张三
", "No2":"
李四
"}');
ShowMessage(jo['No2'].AsString); //
李四
end;
为什么以用接口为主
我猜是
:
一个
JSON
对象中可能包含的子对象太多
,
用接口释放比较方便
,
因为是自动释放
;
另外
, Delphi 2010
新给的
IOUntils
单元的功能是用结构的方式给出
,
结构也是自释放的
;
自动释放
!
这会是个方向吗
不过这样的确会少写很多代码
.
JSON
SuperObject(2):
SuperObject
构建一个
JSON
的常用方法
:
从字符串、从文件、从流
.
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.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry
学习Delphi下的JSON操作
DELPHI XE2 采用 JSON 的方式来序列化对象
使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
如何使用 PPChar
delphi XE10 安卓开发环境配置2
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服