JSon SuperObject 研究

      SuperObject是delphi不多的著名开源JSON开源类库,其作者的作品还有大名鼎鼎的DSPACK等许多著名的开源VCL类库。
      至于SuperObject的详细用法,万一老师已经很描述很清楚。最新版的1.2.1,添加了currency属性,也支持D2010,包括最新的RTTI。
      SuperObject看起来很容易上手,但有一些概念必须理解清楚,比如数组的创建和使用、空值如何赋值等。以下就讲讲SuperObject一些特殊的用法:
1、JSON数组。创建数组有两种方式,一个是 TSuperObject.Create(stArray),另外一种是用接口方式 SA([]);
最常用的是后面一种。数组JSON对象转换 AsArray 方法,然后使用 ADD 或其 length 等方法或属性;数组加入JSON对象,JSON对象必须以 O 的属性支持赋值;范例如下:
//这个范例是创建列的元信息
var
  sj,aj,sj2:ISuperObject;
  i:Integer;
  Fieldtyp,JsonTyp:string;
  List:TStringList;
begin
  sj := SO();//创建JSON对象
  aj := SA([]);//创建数组
    for i := 0 to DataSet.FieldCount - 1 do
     begin
       sj2 := SO();//创建列的信息,数组里的子对象
       //GetFieldTypeInfo(DataSet.Fields ,Fieldtyp,JsonTyp);//获取字段信息,以及对应的JSON字段信息,可以忽略不看
    
       sj2.S[cstFieldName] := DataSet.Fields.FieldName;
       sj2.S[cstFieldType] := Fieldtyp;
       sj2.S[cstJsonType] := JsonTyp;
       sj2.I[cstFieldSize] := DataSet.Fields.Size;
       sj2.B[cstRequired] := DataSet.Fields.Required;
       sj2.I[cstFieldIndex] := DataSet.Fields.Index;
       aj.AsArray.Add(sj2);// 数组转换,必须用 AsArray
       List.Add(DataSet.Fields.FieldName+'='+JsonTyp);
     end;
     sj.O['Cols'] := aj;//数组添加到JSON对象,必须以对象方式
end;
2、如何处理空值NULL。空值是强类型数据下一种未赋值或未知的值。下面是SuperObject 的数据类型,看看字面意思也就大概明白。  TSuperType = (
     stNull,
     stBoolean,
     stDouble,
     stCurrency,
     stInt,
     stObject,
     stArray,
     stString
     ,stMethod  );
     SO()接口方法有好多Overload方法,其中
  function SO(const value: Variant): ISuperObject; overload
就包含了空值的处理。同样,空值也是一种属性对象,因此,我们必须这样赋值:
SJ.O['Name'] := SO(NULL); 在使用之前,最好先判断 ISuperObject 值 的 datatype是否为 stNull
3、从文件获取JSON对象。ISuperObject不能直接从文件导入JSON信息,必须借助实体类TSuperObject。
var
  sj:ISuperObject;
begin
     sj := TSuperObject.ParseFile('Json.txt');
end;


        
        



        







        
          
            
            评论这张
          
        


          
            
              JSon SuperObject 研究 - yyimen - yyimen的博客
            
            转发至微博
          
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值