zoukankan      html  css  js  c++  java
  • JSON 之 SuperObject(13): 关于 SO 与 SA 函数


    通过 SuperObject 的公用函数 SO 实现一个 ISuperObject 接口非常方便;

    前面都是给它一个字符串参数, 它的参数可以是任一类型甚至是常数数组.

    SA 和 SO 都是返回一 ISuperObject;
    SO 可以产生一个 stArray 类型的 ISuperObject, 但 SA 只会产生 stArray 类型的 ISuperObject;
    SA 的参数也只能是常数数组.
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses SuperObject, TypInfo;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      jo: ISuperObject;
    begin
      jo := SO(['A',1, 'B',2.5, 'C','xyz', 'D',True]);
      ShowMessage(jo.AsJSon); // {"D":true,"C":"xyz","B":2.5,"A":1}
      {显示类型名}
      ShowMessage(GetEnumName(TypeInfo(TSuperType), Ord(jo.DataType))); // stObject
    
      jo := SO(3.14);
      ShowMessage(jo.AsJSon); // 3.14
      {显示类型名}
      ShowMessage(GetEnumName(TypeInfo(TSuperType), Ord(jo.DataType))); // stDouble
    
      jo := SA(['A',1, 'B',2.5, 'C','xyz', 'D',True]);
      ShowMessage(jo.AsJSon);
      {显示类型名}
      ShowMessage(GetEnumName(TypeInfo(TSuperType), Ord(jo.DataType))); // stArray
    end;
    
    //SA 再举例
    procedure TForm1.Button2Click(Sender: TObject);
    var
      jo,ja: ISuperObject;
    begin
      ja := SA(['x','y','z']);
      
      jo := SO('{A:1, B:2}');
      jo['B'] := ja;
    
      ShowMessage(jo.AsJSon); // {"B":["x","y","z"],"A":1}
    end;
    
    end.
    
  • 相关阅读:
    Javascript 中的浮点数精度丢失问题
    react中使用字符串中生成HTML
    前端-HTML规范
    js 数组(Array)的使用
    ES6变量声明解析
    cookies sessionlStorage和localStroage的区别
    面向对象
    迭代器、生成器、装饰器
    内置函数和文件读取
    函数
  • 原文地址:https://www.cnblogs.com/del/p/1590692.html
Copyright © 2011-2022 走看看