链式写法有很多优点:连贯、语意集中、简洁、一气呵成、可读性强。比如要把 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 链式写法(转全能中间件)的更多相关文章

  1. Delphi Sysem.JSON 链式写法

    链式写法有很多优点:连贯.语意集中.简洁.一气呵成.可读性强.比如要把 3.1415926 中的 59 提取为一个整数:Pi.ToString().Substring(5,2).ToInteger() ...

  2. JQuery事件的链式写法

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. jquery事件链式写法

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  4. ajax操作的链式写法

    ajax操作的传统写法: $.ajax({ url: url, success: function(){ doWhenSuccess(); }, error: function(){ doWhenEr ...

  5. Jquery | 基础 | 事件的链式写法

    $(".title").click(function () { $(this).addClass("curcol").next(".content&q ...

  6. Java 链式写法

    Java链式写法,子类继承父类的属性,也可以返回子类的对象,只是需要重写基类的Set方法 public class MyLS { public static void main(String[] ar ...

  7. Java链式写法

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11613067.html Java 链式写法:详细看代码 package chain; /** ...

  8. javascript 链式写法

    熟悉Jquery的同学都知道,它对dom的操作基本都链式调用的写法,这种给人感觉就是很简洁,易懂,而且最大的好处就是避免多次重复使用一个对象变量. 链式的实现方式:链式操作是在对象的方法中通过最后返回 ...

  9. async await 的使用。 其实就是和then一样,只不过改变了链式写法

    这样写显得更加舒服.

随机推荐

  1. css颜色的设置

    css的颜色设置 1.英文命令颜色 p{color:blue;}RGB颜色 2.与 photoshop 中的 RGB 颜色一致,由 R(red).G(green).B(blue) 三种颜色的比例来配色 ...

  2. PythonStudy——装饰器 Decorator

    def outer(func): def inner(): print("新增功能1") func() print("新增功能2") return inner ...

  3. VUE踩坑之路

    一.常见报错 1.vue-cli-service 不是内部或外部命令,也不是可运行程序 解决方案: 用以下命令安装Vue CLI就好 npm install -g @vue/cli # OR yarn ...

  4. chromedriver与chrome各版本的对应关系表

    driver的下载地址 http://chromedriver.storage.googleapis.com/index.html 对应关系也可以查看 google官方的说明,通过当前浏览器版本找到对 ...

  5. JetBrains GoLand 注册码

    选择license server 输入 http://idea.youbbs.org 完成 要求联网

  6. Spring事件通知机制

    在上图中,调用 getApplicationEventMulticaster()方法,该方法返回的ApplicationEventMulticaster类型的对象applicationEventMul ...

  7. Three failed attempts of handling non-sequential data

    The Progress of Products Classification Cause now we are considering to classify the product by two ...

  8. OkHttp之Interceptor

    先看RealCall 发送一个请求,我们会先创建一个request,然后使用okHttpClient.newCall(request),创建一个call进行网络请求,这个call,就是RealCall ...

  9. Delphi 7启动后提示Unable to rename delphi32.dro的解决办法

    在Win10 64 上安装完Delphi 7,每次打开报错: Unable to rename 'C:\Program Files (x86)\Borland\Delphi7\Bin\delphi32 ...

  10. 所有设计复杂的ORM都是浮云

    很久没有写文章了. 一直很忙,不是很有时间整理. 今天主要是来吐槽下那些设计很复杂的ORM的. 项目做的越多,越觉得ORM这个东西设计的太复杂实在是没什么意义. 比较推崇Dapper这样比较简单,效率 ...