superobject使用方法
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;
superobject使用方法的更多相关文章
- JSON 之 SuperObject(6): 方法
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- XE3随笔6:SuperObject 的 JSON 对象中还可以包含 "方法"
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...
- Delphi7下SuperObject的JSON使用方法
uses superobject; procedure TForm1.FormCreate(Sender: TObject); var aJson: ISuperObject; aSuperArray ...
- JSON 之 SuperObject(3): 访问
测试数据提前加入 Memo1 中: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, ...
- JSON 之 SuperObject(1)
一直盼着 Delphi 能够直接支持 "正则表达式" 与 "JSON"; Delphi 2009 刚来的时候, 有了 JSON, 但不好, 那时尝试过一点. 这 ...
- 教程-delphi的开源json库:superobject,用法简介
困惑一天的问题 一个语句搞定了... 回头细说. superobject中的{$DEFINE UNICODE} 就是它,这是json官方推荐的Delphi处理json的包,地址: http://www ...
- 解决DATASNAP远程方法参数超过32个的问题
群里有位同仁提出他有一个DATASNAP远程方法超过了32个参数,然后DELPHI编译通不过,提示方法参数不能超过32个,问怎么办?于是群内同仁纷纷出主意,我说用OLEVARINAT数组,有人说用RE ...
- SuperObject Delphi 的 JSON 属性乱序 - 操作类改造 - 关于属性顺序的问题
Delphi 的 ISuperObject 属性顺序为随机.但是很多时候,是需要按加入顺序进行读取.我也看了网上很多人有类似需求.也有人问过原作者,作者答复为:JSON协议规定为无序.看了我真是无语. ...
随机推荐
- 软工实践 - 第十五次作业 Alpha 冲刺 (6/10)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10004469.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...
- SQL Server 重新编译存储过程的方式有三种
SQL Server 中,强制重新编译存储过程的方式有三种: sp_recompile 系统存储过程强制在下次执行存储过程时对其重新编译.具体方法是:从过程缓存中删除现有计划,强制在下次运行该过程时创 ...
- BZOJ 1483:[HNOI2009]梦幻布丁(链表+启发式合并)
[HNOI2009]梦幻布丁 Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一 ...
- Android 热更新是如何实现的?
Android开发中,我们常常遇到热更新这个概念,而这个热更新具体是怎么实现的呢?今天在网上看到一个大神分享的热更新相关实现原理和实现代码,感觉灰常不错,分享给广大码农盆友look look . Cl ...
- java 图形化界面笔记(1)
目录 JFrame窗体......................................................................................... ...
- [hdu6432]Problem G. Cyclic
题目大意:给你$n$,一种合法的排列为,排列中没有$s[i\%n+1]-s[i]==1$,求合法方案数 题解:容斥,令$f_{i,j}$表示有$i$个元素,至少包含$j$个$s[i\%n+1]-s[i ...
- spring in action 学习笔记九:如何证明在scope为prototype时每次创建的对象不同。
spring 中scope的值有四个:分别是:singleton.prototype.session.request.其中session和request是在web应用中的. 下面证明当scope为pr ...
- C语言fopen函数了解
fopen()函数功能:open a file. 原型:FILE * fopen(const char * path,const char * mode); 需要#include<stdio.h ...
- 官网cocos2d
http://cocos2d.spritebuilder.com/download 官网 https://github.com/cocos2d/cocos2d-spritebuil ...
- Linux平台用C++实现事件对象,同步线程
前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的.这次在Linux平台上实现与之类似的事件对象.与其相关的一组API包括:pthread_mutex_init,p ...