全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Delphi中使用ISuperObject解析Json数据的实现代码

Java、Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即IsuperObject。如果还没有这个组件的请在网上搜索下载或者在下面留言处留下你的邮箱向本人索取。

下面先说一下ISuperObject中几个常用的函数

function SO(const s: SOString = ‘{}'): ISuperObject; overload; 此函数传入json数据字符串,并返回一个ISuperObject对象,这一般是我们解析json时使用的第一个函数,如jObj := SO(jsonstr)。

property O[const path: SOString]: ISuperObject read GetO write PutO; default; 如:jobj.O[‘username'],此函数被一个ISuperObject对象调用,方括号内的字符串为json中的字段名称,返回一个ISuperObject对象。

property S[const path: SOString]: SOString read GetS write PutS; 此函数被一个ISuperObject对象调用,和O[‘username']不同的是,它返回的是一个SoString,即一个字符串,使用方法 str := jObj.S[‘username']; 同理的还有其他几个类似的函数,如I[‘age']返回整数,B[‘isenable']返回布尔型,A[‘users']返回一个TSuperArray数组
AsString, AsBoolean, AsInteger,AsArray,ISuperObject的函数,用来把ISuperObject转换成相应的数据类型。

下面我们看一个演示代码,json数据如下

{
  "retcode": "1", 
  "datafrom": "server",
  "users": "[{\"id\":1, \"username\": \"liuderu\", \"website\": \"bcoder.com\"},{\"id\":2, \"username\": \"Jeoe\", \"website\": \"baidu.com\"}]"
}

Delphi版本2010,代码如下:

unit uFmMain;

interface

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

type
 TFmMain = class(TForm)
  Memo1: TMemo;
  ListView1: TListView;
  BitBtn1: TBitBtn;
  Label1: TLabel;
  procedure BitBtn1Click(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var
 FmMain: TFmMain;

implementation

{$R *.dfm}

procedure TFmMain.BitBtn1Click(Sender: TObject);
var
 jRet, jUsers: ISuperObject;
 aryUsers: TSuperArray;
 retCode: integer;
 strUsers: string;
 i: integer;
begin
 jRet := SO(Memo1.Text);
 if (jRet.O['retcode'] <> nil) then begin
  retCode := jRet.O['retcode'].AsInteger;
  Label1.Caption := '返回值:' + IntToStr(retCode) + '; 数据来源:' + jRet.O['datafrom'].AsString;

  if(jRet.O['retcode'].AsInteger = 1) then begin
   strUsers := jRet.O['users'].AsString;
   jUsers := SO(strUsers);
   aryUsers := jUsers.AsArray;
   for I := 0 to aryUsers.Length - 1 do begin
    with ListView1.Items.Add do begin
     Caption := aryUsers[i].O['id'].AsString;
     SubItems.Add(aryUsers[i].O['username'].AsString);
     SubItems.Add(aryUsers[i].O['website'].AsString);
    end;
   end;
  end;
 end;
end;

end.

一个简单的Delphi使用ISuperObject解析json的例子:Delphi_Json_jb51.rar


# Delphi  # ISuperObject  # 自定义spring mvc的json视图实现思路解析  # C#实现json格式数据解析功能的方法详解  # 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)  # jquery利用json实现页面之间传值的实例解析  # JSONP跨域的原理解析及其实现介绍  # android客户端从服务器端获取json数据并解析的实现代码  # JS解析json数据并将json字符串转化为数组的实现方法  # 关于JSON解析的实现过程解析  # 的是  # 几个  # 转换成  # 这一  # 还没有  # 也有  # 第一个  # 让我们  # 请在  # 就把  # 布尔  # 来实现  # 中都  # 先说  # 返回值  # 括号内  # 网上  # br  # js  # AsString 


相关文章: 建站为何优先选择香港服务器?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何选择高性价比服务器搭建个人网站?  ,交易猫的商品怎么发布到网站上去?  已有域名如何快速搭建专属网站?  如何用腾讯建站主机快速创建免费网站?  建站之星后台管理系统如何操作?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  建站之星收费标准详解:套餐费用及年费价格表一览  如何通过主机屋免费建站教程十分钟搭建网站?  淘宝制作网站有哪些,淘宝网官网主页?  如何选择适合PHP云建站的开源框架?  C++中引用和指针有什么区别?(代码说明)  制作网站的公司有哪些,做一个公司网站要多少钱?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何快速建站并高效导出源代码?  平台云上自助建站如何快速打造专业网站?  如何通过WDCP绑定主域名及创建子域名站点?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何快速登录WAP自助建站平台?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  小程序网站制作需要准备什么资料,如何制作小程序?  北京网站制作公司哪家好一点,北京租房网站有哪些?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  c# 在高并发场景下,委托和接口调用的性能对比  韩国服务器如何优化跨境访问实现高效连接?  建站之星如何修改网站生成路径?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  网站制作免费,什么网站能看正片电影?  建站之星后台密码遗忘如何找回?  建站VPS推荐:2025年高性能服务器配置指南  c# 服务器GC和工作站GC的区别和设置  ,购物网站怎么盈利呢?  制作农业网站的软件,比较好的农业网站推荐一下?  网站制作公司,橙子建站是合法的吗?  营销式网站制作方案,销售哪个网站招聘效果最好?  定制建站流程步骤详解:一站式方案设计与开发指南  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站之星CMS五站合一模板配置与SEO优化指南  ,sp开头的版面叫什么?  如何快速搭建高效可靠的建站解决方案?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何通过山东自助建站平台快速注册域名?  详解jQuery停止动画——stop()方法的使用  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  简单实现Android文件上传  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。