JSON 之 SuperObject(9): TSuperType】的更多相关文章

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     procedure Button1Click(Sender: TObject);     pro…
JSON 之 SuperObject(11): TSuperTableString.TSuperAvlEntry - 万一 - 博客园http://www.cnblogs.com/del/archive/2009/10/27/1590501.html 通过 ISuperObject.AsObject 可获取一个 TSuperTableString 对象. TSuperTableString 的常用属性: count.GetNames.GetValues var   jo: ISuperObjec…
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: ISuperObject; var Result: ISuperObject); //另外, 这是其数据类型的枚举: TSuperType = (stNull, stBoolean, stDouble, stInt, stObject, stArray, stString, stMethod); 测试代码: un…
这几天学习 JSON - SuperObject, 非常幸运地得到了其作者 Henri Gourvest 大师的同步指点! (Henri 大师也是 DSPack 和 GDI+ 头文件的作者; 大师是法国人, 竟能用中文给我回复, 没想到!). 学习中发现 SuperObject 有些地方对中文(或者说 Unicode)支持不是所期望的, 现在专贴提出来供大师鉴别. 以下例子都会出现乱码, 虽然都可以有变通的方案, 但如果不乱码就太好了! unit Unit1; interface uses  …
在 JSON 中, 字符串应该在双引号中; 从上个例子才发现: 原来这个双引号可以省略, 有空格都行 当然只是在程序代码中可以省略, 对象会自动识别添加的. 即如此, 下面写法都可以: uses SuperObject; procedure TForm1.Button1Click(Sender: TObject); var   jo1,jo2,jo3: ISuperObject; begin   jo1 := SO('{"Name":"张三", "Age&…
unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     procedure Button1Click(Sender: TObject);     pro…
SuperObject 构建一个 JSON 的常用方法: 从字符串.从文件.从流. unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Button…
一直盼着 Delphi 能够直接支持 "正则表达式" 与 "JSON"; Delphi 2009 刚来的时候, 有了 JSON, 但不好, 那时尝试过一点. 这是以前的链接: 什么是 JSON? Delphi 2010 带了两个相关单元: DBXJSON.DBXJSONReflect 貌似很强大, 但主要是给 DataSnap 准备的; 尝试了半天, 也很失望: 可能给 DataSnap 网络数据传递够用了, 但太简陋了, 好像是没写完, 对中文支持也有问题. 我想…
unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Button3: TButton;     procedure Button1Click(Sen…
unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Button3: TButton;     procedure Button1Click(Sen…
测试数据提前加入 Memo1 中: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Memo1: TMemo;     Button1: TButton;     Button2: TButton;     Button…
JSON之SuperObject(1):一直盼着Delphi能够直接支持"正则:Delphi2009刚来的时候,有了JSON,但:Delphi2010带了两个相关单元:DBXJS:我想不等了,找第三方吧,真的找到了惊喜:JSON:先来个简单测试:://SuperObject提倡使用接口;Pars:var:jo:ISuperObject;:begin --------------------------------------------------------------------------…
项目需要写了一个JSON和DataSet互转的单元.....支持了Delphi自带的几种DataSet, 结果发现DBXJSON和ADO的效率真的是好低啊........-_-.... 开发环境是XE5, 实测ADODataSet比其他三种创建数据集的速度慢了几乎3倍(200毫秒 对比 600毫秒), 而DBXJSON对比SuperObject速度则慢了2倍(300毫秒对比600毫秒) 数据集包括整型/日期/浮点/二进制字段 1000条数据, JSON数据大小大概为3M JSON与数据集转换单元…
演示一下调用淘宝的接口,让大家心里有个数, 很简单,新建一个工程,拖一个IDHttp,Button和Memo到窗体上去 然后在这个Button的OnClick事件中写入如下代码: [delphi] view plaincopyprocedureTfrmMain.btnCallTopAPIClick(Sender: TObject);  var   AHttpRequestURL:String;   AHttpReponseContent:TMemoryStream;  begin   AHttp…
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: ISuperObject; var Result: ISuperObject); //另外, 这是其数据类型的枚举: TSuperType = (stNull, stBoolean, stDouble, stInt, stObject, stArray, stString, stMethod); 测试代码: un…
Delphi 的 ISuperObject 属性顺序为随机.但是很多时候,是需要按加入顺序进行读取.我也看了网上很多人有类似需求.也有人问过原作者,作者答复为:JSON协议规定为无序.看了我真是无语. 也看过网上一些人自己的修改,但是修改后有两个问题(网上的方法都不好,只能自己动手了): 1. 性能急剧下降.原作者是用二叉树对性能做了极大的优化.但是网上修改的方法性能不行. 2. 属性数大于 32 时会出错.(原来用的是二叉树,修改后部分算法未修改,导致此问题). 我采用的是重写遍历器的方法,和…
uses superobject; procedure TForm1.FormCreate(Sender: TObject); var aJson: ISuperObject; aSuperArray: TSuperArray; i:Integer; begin {1.赋初值} aJson:=SO('{"zoo":"涂磊动物园","animals":[{"name":"猴子","year"…
困惑一天的问题 一个语句搞定了... 回头细说. superobject中的{$DEFINE UNICODE} 就是它,这是json官方推荐的Delphi处理json的包,地址: http://www.progdigy.com/?page_id=6 superobject中自动默认为UNICODE编码,处理中文会出现乱码. 注释{$DEFINE UNICODE} 就可以了. var    j, a: ISuperObject; //不能是TSuperObject,尽管有TSuperObject这…
在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包含了Delta数据包,其数据格式远比普通的TDataset更复杂. 数据集字段信息,是一个完整的字典信息.因此,我们在JSON必须也建立字典信息,才能创建数据集的字段信息.我们设置其JSON信息如下: COLS:[字段列表信息],如: "Cols":[{"JsonType&quo…
1.通过delphi程序访问PHP事先写好的webservice(查询功能),webservice返回json格式数据. 2.通过superobject读取json数据 得到效果如下: //深层级的访问 jo:=SO('{"datalist":{"username":"admin","name":"管理","sex":"男"}}'); if   jo['datalis…
// SUPEROBJECT 序列数据集 cxg 2017-1-12// {"data":[{"c1":1,"c2":1}]};// DELPHI7 适用 unit superobjectDB; interface uses SysUtils, db, DBClient, superobject, EncdDecd, Classes, Httpapp; // {"data":[{"c1":1,"c…
//遍历对象 procedure TForm1.Button5Click(Sender: TObject); var item,jo: ISuperObject; ja,JA_TYPE,JA_MAC:TSuperArray; //json数组 i,j,k:Integer; jts: TSuperTableString; //TSuperTableString 的常用属性: count.GetNames.GetValues begin jo := SO(Memo1.Text); jts:=jo.A…
(* { "name": "Henri Gourvest", /* this is a comment */ "vip": true, "telephones": ["000000000", "111111111111"], "age": 33, "size": 1.83, "adresses": [ { "adres…
接口数据有如下规范{"error": 0, "msg": "", "data": ...} 其中数据data类型不确定.发生错误时,返回错误代码error与提示msg,反之error为0,msg为"". function GetResultData(const AStr: string; var AData: string): Boolean; var vJ: ISuperObject; begin vJ…
1. 要得到的Json数据:[{"name":"张三","age": 17},{"name":"李四","age":20}] function GetArrayJson: string; function GetPersonSO(const AName: string; AAge: Integer): ISuperObject; begin Result := SO; Result.S[…
在经过一系列的波折后,还是觉得delphi读取并修改json文件来的方便: 在网络上找到一个delphi的三方库ISuperObject,添加到项目后直接引用就行: 下载地址 ISuperObject中几个常用的函数: function SO(const s: SOString = ‘{}’): ISuperObject; overload; 此函数传入json数据字符串,并返回一个ISuperObject对象,这一般是我们解析json时使用的第一个函数,如jObj := SO(jsonstr)…
procedure TForm1.Button1Click(Sender: TObject); var ja,jo: ISuperObject; I: Integer; begin ja := SA([]); jo :=SO(); jo.S[); ja.AsArray.Add(jo); Memo1.Lines.Add(ja.AsString);//[{"index":"10"}] jo.S[); Memo1.Lines.Add(ja.AsString);//[{&q…
(* * Super Object Toolkit * * Usage allowed under the restrictions of the Lesser GNU General Public License * or alternatively the restrictions of the Mozilla Public License 1.1 * * Software distributed under the License is distributed on an "AS IS&q…
unit uJSONDB; interface uses SysUtils, Classes, Variants, DB, DBClient, SuperObject, Dialogs; type TJSONDB = class private class function getJsonFieldNames(res: ISuperObject):TStringList ; class function getJsonFieldValues(res: ISuperObject):TStringL…
如题......只是一个单元, 为了测试JSON单元性能的... 具体测试结果参考: http://www.cnblogs.com/hs-kill/p/3668052.html 代码中用到的SevenZIP单元在这里: http://www.cnblogs.com/hs-kill/p/3876160.html unit DSCJSON; // *************************************************************************** /…