Delphi Sysem.JSON 链式写法
链式写法有很多优点:连贯、语意集中、简洁、一气呵成、可读性强。比如要把 3.1415926 中的 59 提取为一个整数:Pi.ToString().Substring(5,2).ToInteger() 轻车熟路的感觉,让人觉得,哇!好帅的写法,牛x。
以前以为只有 TJSONBuilder 才支持链式语法,今天发现 TJSONObject 也支持,比如要生成下面的 JSON
{
"name": "张三",
"vip": true,
"telephones": [
"13012345678",
"19786543210"
],
"age": 24,
"size": 1.72,
"adresses": [
{
"adress": "foo",
"city": "The wall",
"pc": 57000
},
{
"adress": "foo",
"city": "Winterfell",
"pc": 44000
}
]
}
使用 TJSONObject 链式写法,代码如下:
var
JsonObject:TJSONObject;
begin
JsonObject:= TJSONObject.Create; JsonObject
.AddPair('name', TJSONString.Create('张三'))
.AddPair('vip', TJSONTrue.Create)
.AddPair('telephones',
TJSONArray.Create
.Add('')
.Add('')
)
.AddPair('age', TJSONNumber.Create())
.AddPair('size', TJSONNumber.Create(1.72))
.AddPair('adresses',
TJSONArray.Create
.Add(
TJSONObject.Create
.AddPair('adress', 'foo')
.AddPair('city', 'The wall')
.AddPair('pc', TJSONNumber.Create())
)
.Add(
TJSONObject.Create
.AddPair('adress', 'foo')
.AddPair('city', 'Winterfell')
.AddPair('pc', TJSONNumber.Create())
)
); Memo1.Text := TConverters.JsonReformat(JsonObject.ToJSON); end;
Delphi 10.1 新增的一个JSON读写框架 :Readers and Writers JSON Framework ,可以了解下:
Builder:=TJSONObjectBuilderEx.NewBuilder;
Builder
.BeginObject
.Add('name','张三')
.Add('vip',true)
.BeginArray('telephones')
.Add('')
.Add('')
.EndArray
.Add('age',)
.Add('size',1.72)
.BeginArray('adresses')
.BeginObject
.Add('adress','foo')
.Add('city','The wall')
.Add('pc',)
.EndObject
.BeginObject
.Add('adress','foo')
.Add('city','Winterfell')
.Add('pc',)
.EndObject
.EndArray
.EndObject;
Memo1.Text := Builder.ToJSON;
不过,看起来,使用 TJSONBuilder 层次更分明,更优雅。

Delphi Sysem.JSON 链式写法的更多相关文章
- Delphi Sysem.JSON 链式写法(转全能中间件)
链式写法有很多优点:连贯.语意集中.简洁.一气呵成.可读性强.比如要把 3.1415926 中的 59 提取为一个整数:Pi.ToString().Substring(5,2).ToInteger() ...
- JQuery事件的链式写法
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- jquery事件链式写法
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- ajax操作的链式写法
ajax操作的传统写法: $.ajax({ url: url, success: function(){ doWhenSuccess(); }, error: function(){ doWhenEr ...
- Jquery | 基础 | 事件的链式写法
$(".title").click(function () { $(this).addClass("curcol").next(".content&q ...
- Java 链式写法
Java链式写法,子类继承父类的属性,也可以返回子类的对象,只是需要重写基类的Set方法 public class MyLS { public static void main(String[] ar ...
- Java链式写法
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11613067.html Java 链式写法:详细看代码 package chain; /** ...
- javascript 链式写法
熟悉Jquery的同学都知道,它对dom的操作基本都链式调用的写法,这种给人感觉就是很简洁,易懂,而且最大的好处就是避免多次重复使用一个对象变量. 链式的实现方式:链式操作是在对象的方法中通过最后返回 ...
- async await 的使用。 其实就是和then一样,只不过改变了链式写法
这样写显得更加舒服.
随机推荐
- ajax 样式
Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.它是一种构建网站的强大方法. 使用aja ...
- learning java FileReader
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import ...
- Linux常用命令合集
常用命令合集 命令选项和参数 Linux中的命令格式为:command [options] [arguments] //中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个 ...
- 15-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,调节LED亮度,上位机程序编写
https://www.cnblogs.com/yangfengwu/p/11104167.html 先说一下整体思路哈.. 咱滑动的时候 会进入这个,然后咱呢不直接从这个里面写发送 因为这样的话太快 ...
- 【loj2262】【CTSC2017】网络
题目 一颗\(n\)个点的树,求加入一条边点之后两点间最长距离的最小值 : \(n \le 100000\) ; 题解 首先加入边的两个端点一定在直径上面,先\(dfs\)拎出直径来讨论(下标只代表直 ...
- 计蒜客 39272.Tree-树链剖分(点权)+带修改区间异或和 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest E.) 2019ICPC西安邀请赛现场赛重现赛
Tree Ming and Hong are playing a simple game called nim game. They have nn piles of stones numbered ...
- mysql 添加表字段
mysql> alter table table1 add price ) not null; Query OK, rows affected (0.05 sec) Records: Dupli ...
- mysql 创建分组
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...
- python 安装离线库
(起因:报错找不到一个module,百度也找不到这个module,机智如我找宁博翻墙看怎么解决,毕竟是歪果仁的代码嘛,果真就在git找到了这个module哈哈哈哈机智如我!) 方法: 进入命令行窗口, ...
- Maven在jar中生成重复的pom.xml和pom.properties文件
eclispe maven打包的时候总是出现"生成的jar的META-INF中,重复的pom.xml和pom.properties文件.",maven命令直接打包则没有这个问题. ...