博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
superobject使用方法
阅读量:6973 次
发布时间:2019-06-27

本文共 1981 字,大约阅读时间需要 6 分钟。

superobject使用方法

 ISuperObject.AsObject 可获取一个 TSuperTableString 对象.

TSuperTableString 的常用属性: count、GetNames、GetValues


var  jo: ISuperObject;  jts: TSuperTableString;begin  jo := SO('{A:1, B:2, C:3, D:{x:4, y:5, z:6}}');  jts := jo.AsObject;  ShowMessage(IntToStr(jts.count));    // 4  ShowMessage(jts.GetNames.AsString);  // ["D","C","B","A"]  ShowMessage(jts.GetValues.AsString); // [{"z":6,"y":5,"x":4},3,2,1]  jts := jo['D'].AsObject;  ShowMessage(IntToStr(jts.count));    // 3  ShowMessage(jts.GetNames.AsString);  // ["z","y","x"]  ShowMessage(jts.GetValues.AsString); // [6,5,4]end;

使用FOR...IN...遍历子对象,不适用于DELPHI7等低版本,因为它们不支持此语法。

var  jo,i: ISuperObject;begin  jo := SO('{A:1, B:2, C:3, D:[4, 5, {X:6}, {Y:[7,8,{m:9}]}]}');  for i in jo do ShowMessage(i.AsString);end; TSuperAvlIterator 枚举出的是 TSuperAvlEntry 对象(其包含 Name 和 Value); 获取 TSuperAvlIterator 方法: TSuperTableString.GetEnumerator 或者 ISuperObject.AsObject.GetEnumerator.
var  jo: ISuperObject;  ite: TSuperAvlIterator;begin  jo := SO('{A:1, B:2, C:3, D:[4, 5, {X:6}, {Y:7}]}');  ite := jo.AsObject.GetEnumerator; 

  while ite.MoveNext do

  begin
  lname := ite.Current.Name;
  lvalue := ite.Current.Value.AsString;
  end;

end;

ObjectFindFirst、ObjectFindNext、ObjectFindClose 是 SuperObject 给的另一种枚举元素的方式.

它用到了一个结构:


TSuperObjectIter = record  key: SOString;  val: ISuperObject;  Ite: TSuperAvlIterator;end;//应用举例:var  jo: ISuperObject;  iter: TSuperObjectIter;begin  jo := SO('{A:1, B:2, C:3, D:[4, 5, {X:6}, {Y:7}]}');  if ObjectFindFirst(jo, iter) then  begin    repeat      ShowMessageFmt('%s - %s', [iter.key, iter.val.AsString]);    until not ObjectFindNext(iter);  end;  ObjectFindClose(iter);end;//或者:var  jo: ISuperObject;  iter: TSuperObjectIter;begin  jo := SO('{A:1, B:2, C:3, D:[4, 5, {X:6}, {Y:7}]}');  if ObjectFindFirst(jo, iter) then  begin    repeat      ShowMessageFmt('%s - %s', [iter.Ite.Current.Name, iter.Ite.Current.Value.AsString]);    until not ObjectFindNext(iter);  end;  ObjectFindClose(iter);end;

 

转载地址:http://tlesl.baihongyu.com/

你可能感兴趣的文章
[CF566A]Matching Names
查看>>
[Oracle]ORA-01461: can bind a LONG value only for insert into a LONG column
查看>>
Linux学习之CentOS(三十三)--DNS基础及域名系统架构
查看>>
[复变函数]第03堂课 1.2 复平面上的点集
查看>>
Python:Opening Python Classes
查看>>
mvc:view-controller
查看>>
Android推送分析
查看>>
微信公众平台开发者文档
查看>>
ORACLE数据库不同故障下的恢复总结
查看>>
使用eclipse转换普通项目为web项目
查看>>
ASP.NET 5中的ASP.NET Bundles跑到哪里去了?
查看>>
云计算解码:技术架构和产业运营
查看>>
windows7学习一
查看>>
单选按钮易忽略的Group属性
查看>>
转 sql 优化
查看>>
PHP安全相关的配置(1)
查看>>
virtualbox 中,虚拟机网络使用NAT方式时,其它机器对虚拟机的访问
查看>>
Salesforce.com + AutoCAD WS集成研究 part2
查看>>
[Ubuntu] Access denied for user ‘debian-sys-maint’@'localhost’ (using password: YES)
查看>>
php curl请求转发
查看>>