文档章节

JSON 之 SuperObject(13): 关于 SO 与 SA 函数

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 268
阅读 18
收藏 0
点赞 0
评论 0

通过 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.

 
 
 
 
 

 

 

  

© 著作权归作者所有

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
superobject 序列 数据集 之间转化

superobject 序列数据集 unit uDBJson; interface {$HINTS OFF} usesSysUtils, Classes, Variants, DB, DBClient, SuperObject; typeTTableJSon = class private const const const const co......

vga ⋅ 2016/08/31 ⋅ 0

JSon SuperObject 研究2:数据集与JSON对象互转

JSon SuperObject 研究2:数据集与JSON对象互转 JSON不能完全替代XML,但绝对是未来的大势所趋,其优点是简单、体积小、解析更快、解析占用资源更少。在delphi中,数据集是最常用数据存取方式...

vga ⋅ 2014/12/20 ⋅ 1

iOS安全–不同平台的崩溃收集

发布的app难免会出现一些奇葩的bug,为了能够实时跟踪app的崩溃,需要接管系统的异常捕获接口,自己来收集保存崩溃现场信息。 下面简单说一下几个平台的异常崩溃捕获。 1.iOS 1.1 Exception ...

刘星石 ⋅ 2016/03/08 ⋅ 0

Linux 信号signal处理函数

alarm(设置信号传送闹钟) 相关函数 signal,sleep 表头文件 #include 定义函数 unsigned int alarm(unsigned int seconds); 函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒...

长平狐 ⋅ 2013/01/06 ⋅ 0

Linux 信号signal处理函数

alarm(设置信号传送闹钟) 相关函数 signal,sleep 表头文件 #include 定义函数 unsigned int alarm(unsigned int seconds); 函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒...

晨曦之光 ⋅ 2012/03/02 ⋅ 0

python sqlalchemy JSON

SQLAlchemy转换成json格式 SQLAlchemy查询出来object转换成json格式,如果数据模型中没有使用外键的话。那么可以直接调用object中的dict方法即可将object转换成dict格式,之后json.dumps即可...

MtrS ⋅ 2015/05/25 ⋅ 0

Head First C 学习日志 第十章 进程间通信 捕捉信号

Head First C 第十章 进程间通信 捕捉信号 关于信号 信号是操作系统控制程序的方式,举个栗子,操作系统在看到用户输入了Ctrl+C时,就会向程序发送中断信号。信号映射表 | 信号 | 处理函数 ...

AlexTuan ⋅ 2016/04/17 ⋅ 0

Redis源码分析系列十:acceptTcpHandler

欲知后事如何,且让我慢慢道来。 现在讲到了函数acceptTcpHandler。我们来跟进去看原理。 ~~~ int cport;//定义整型变量 int cfd;//定义整型变量 char cip[REDIS_IP_STR_LEN]; REDISNOTUSED...

强子哥哥 ⋅ 2013/10/23 ⋅ 0

C# 使用多线程如何传递两个以上参数的实现方法(附示例)

某些情况下当我们启动一个线程的时候会向该线程传递参数,有时除了功能上需要之外,我觉得还有就是为了我们能管理好启动的线程组(当然,只开一两个线程什么的也谈不上不好管理了,我说的线程...

余二五 ⋅ 2017/11/15 ⋅ 0

输出的格式用什么函数

输出的代码是: for(i=0;i<4;i++) { sort(ar[i],13); for(j=0;j<13;j++) { cout<

泠然 ⋅ 2010/12/27 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 44分钟前 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 49分钟前 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 昨天 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部