JSON 之 SuperObject(10): Merge、Clone、ForcePath
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses SuperObject; //Merge 合并 procedure TForm1.Button1Click(Sender: TObject); var jo,jt: ISuperObject; begin jo := SO('{X:1}'); jt := SO('{Y:2}'); jo.Merge(jt); ShowMessage(jo.AsJSon); // {"Y":2,"X":1} // jo := SO('{X:1, Y:2}'); jt := SO('{Y:3}'); jo.Merge(jt); ShowMessage(jo.AsJSon); // {"Y":3,"X":1} // jo := SO('{X:1, Y:2}'); jt := SO('{Y:[5,6,7]}'); jo.Merge(jt); ShowMessage(jo.AsJSon); // {"Y":[5,6,7],"X":1} // jo := SO('{A:{x:1, y:2}}'); jt := SO('{A:{m:3, n:4}}'); jo.Merge(jt, True); ShowMessage(jo.AsJSon); // {"A":{"y":2,"x":1,"n":4,"m":3}} end; //Clone 克隆 procedure TForm1.Button2Click(Sender: TObject); var jo,jt: ISuperObject; begin jo := SO('{A:{x:1, y:2, z:3}}'); jt := jo.Clone; jt.I[; jt.I[; jt.I[; ShowMessage(jo.AsJSon); // {"A":{"z":3,"y":2,"x":1}} ShowMessage(jt.AsJSon); // {"A":{"z":9,"y":8,"x":7}} //如果不是克隆 jo := SO('{A:{x:1, y:2, z:3}}'); jt := jo; jt.Delete('A.x'); jt.Delete('A.y'); ShowMessage(jo.AsJSon); // {"A":{"z":3}} ShowMessage(jt.AsJSon); // {"A":{"z":3}} end; //ForcePath 指向子对象 procedure TForm1.Button3Click(Sender: TObject); var jo,jt,ja: ISuperObject; begin jo := SO('{A:{x:1,y:2}, B:[]}'); {通过 ForcePath 可指向一个子对象; 当子对象修改时, 原对象当然也会修改, 本来就是同一个} jt := jo.ForcePath('A'); jt.I[; ShowMessage(jo.AsJSon); // {"B":[],"A":{"y":2,"x":9}} {原对象修改, 当然子对象也会修改} ja := jo.ForcePath('B', stArray); jo.A[] := SO('m'); jo.A[] := SO('n'); ShowMessage(ja.AsJSon); // ["m","n"] {ISuperObject.ForcePath 和 ISuperObject.O[] 差不多, 只是后者是可读写的} jo := SO('{A:{x:1,y:2}, B:[]}'); jt := jo.O['A']; //或简写为: jt := jo['A']; jt.I[; ShowMessage(jo.AsJSon); // {"B":[],"A":{"y":2,"x":8}} end; end.
JSON 之 SuperObject(10): Merge、Clone、ForcePath的更多相关文章
- JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry
JSON 之 SuperObject(11): TSuperTableString.TSuperAvlEntry - 万一 - 博客园http://www.cnblogs.com/del/archiv ...
- JSON 之 SuperObject(6): 方法
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...
- JSON 之 SuperObject(8): 关于乱码的几种情况 - 向 Henri Gourvest 大师报告
这几天学习 JSON - SuperObject, 非常幸运地得到了其作者 Henri Gourvest 大师的同步指点! (Henri 大师也是 DSPack 和 GDI+ 头文件的作者; 大师是法 ...
- JSON 之 SuperObject(7): 可以省略的双引号
在 JSON 中, 字符串应该在双引号中; 从上个例子才发现: 原来这个双引号可以省略, 有空格都行 当然只是在程序代码中可以省略, 对象会自动识别添加的. 即如此, 下面写法都可以: uses Su ...
- JSON 之 SuperObject(5): Format 与转义字符
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- JSON 之 SuperObject(2): 构建方式与 AsJSon
SuperObject 构建一个 JSON 的常用方法: 从字符串.从文件.从流. unit Unit1; interface uses Windows, Messages, SysUtils, ...
- JSON 之 SuperObject(1)
一直盼着 Delphi 能够直接支持 "正则表达式" 与 "JSON"; Delphi 2009 刚来的时候, 有了 JSON, 但不好, 那时尝试过一点. 这 ...
- dojo 官方翻译 dojo/json 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...
- JSON 之 SuperObject(9): TSuperType
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
随机推荐
- Java多线程程序设计详细解析
一.理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立. 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线 ...
- ios 环境配置网址
http://blog.csdn.net/cwb1128/article/details/18019751
- LCA 笔记
简述这几天的LCA 心得: LCA有两种做法:离线 or 在线 先学的离线: 原理博客很多. 我写得两道题,已经模板. HDU:http://acm.hdu.edu.cn/showproblem.ph ...
- asp.net 创建文字特效
相信word 中的 艺术字 功能大家都不陌生.今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一些帮助. 至于有没有使用价值我保持沉默. 一. 投影效果 程序运行效 ...
- √新技能Get - 教你发空白朋友圈
今天下午都被空白朋友圈刷屏了.空白朋友圈也即是在朋友圈里面发空消息,没有图片也没有文字,朋友圈动态是空空的.这是谁在恶搞呢?怎么实现呢? 怎么发空消息啊?其实这是为了帮助大家识别身边用iOS的小伙伴的 ...
- 首次发布App,In-App Purchase 无法submit for review 问题的解决方案
原地址:http://blog.csdn.net/blucenong/article/details/7819195 一个IDP首次create app 然后首次create new IAP的时候,我 ...
- c++中的原子操作
1. c/c++标准中没有定义任何操作符为原子的,操作符是否原子和平台及编译器版本有关 2. GCC提供了一组内建的原子操作,这些操作是以函数的形式提供的,这些函数不需要引用任何头文件 2.1 对变量 ...
- 数据库链接 mysql,sqlserver
1.生成对象工厂 /// <summary> /// 生成对象工厂 /// </summary> public class DBFactory { /// <summar ...
- PowerDesigner 将CDM、PDM导出为图片
选中所有对象(Ctrl + A),复制(Ctrl + C),打开系统的“画图”软件,粘贴(Ctrl + V),另存为BMP或者PNG格式即可. 如果是将图片粘贴到Word文档也是可行的.
- linux下如何查看主机的外网ip地址
在linux下如果我们使用的是nat方式上网.通过ifconfig命令查看到的ip地址往往是内网地址 那么如何查看主机在互联网上使用的公网IP呢?我们可以在命令行下使用curl命令实现这个功能. [r ...