文章分类 - SuperObject
Delphi中JSON最好的简析类
摘要:经过对代码的更深入的跟踪理解,发现了superobject采用的是平衡二叉树的方式保存数据的。 首先看看保存数据的类 TSuperAvlEntry = class private FGt, FLt: TSuperAvlEntry; FGt和FLt分别是保存通过比较(比较hash或者比较key的asc)大的保存在Gt,小的保存在Lt,是一个二叉树链表。 先上图 假如有如下Json "assign": { "FAreaKey": "FKey", "FAreaName": "FName",
阅读全文
摘要:functionTSuperAvlTree.Search(constk:SOString;st:TSuperAvlSearchTypes):TSuperAvlEntry;varcmp,target_cmp:integer;match_h,h:TSuperAvlEntry;ha:Cardinal;beginha:=TSuperAvlEntry.Hash(k);match_h:=nil;h:=FRoot;if(stLessinst)thentarget_cmp:=1elseif(stGreaterinst)thentarget_cmp:=-1elsetarget_cmp:=0;while(h<
阅读全文
摘要:在superObject中添加排序类型type //add By Mofen TSOSortMode = (sosmDefault {默认的方式}, sosmAdd {添加的顺序}, sosmASC {升序}, sosmDesc {降序});添加全局设置方法var nowSortMode: TSOSortMode = sosmDefault;//设置排序模式 Mofenprocedure SetSOSortMode(pvSortMode: TSOSortMode);begin nowSortMode := pvSortMode;end;需要改造的类主要为TSuperAvlTree其中需要改造的
阅读全文
摘要:一直有个想法。SuperObject这么好用的Json简析类,序列化出来的Json排序是乱的。有时候想用SuperObject做保存树数据。这样一来排序都是乱乱的也就放弃了,这几天想改造一下SuperObject类。将改造过程记下。以便以后查阅。最初想法增加ISuperObject属性SortMode:Integer排序方式(0:默认方式, 1:添加顺序, 2:升序)缺点:因为每个值都是一个TSuperObject对象。如果每个TSuperObject添加SortMode属性, 考虑的地方太多。开始认为默认的方式是安装降序排列的,后来深入代码发现通过下面的方法计算key的值再进行比较得出进行排
阅读全文