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;
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/7348677.html
分类:
delphi datasnap 中间件
, JSON
标签:
superobject使用方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?