Delphi Sysem.JSON 链式写法

Posted 全能中间件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(\'13012345678\')
        .Add(\'19786543210\')
    )
    .AddPair(\'age\', TJSONNumber.Create(24))
    .AddPair(\'size\', TJSONNumber.Create(1.72))
    .AddPair(\'adresses\',
      TJSONArray.Create
        .Add(
          TJSONObject.Create
          .AddPair(\'adress\', \'foo\')
          .AddPair(\'city\', \'The wall\')
          .AddPair(\'pc\', TJSONNumber.Create(57000))
         )
      .Add(
          TJSONObject.Create
          .AddPair(\'adress\', \'foo\')
          .AddPair(\'city\', \'Winterfell\')
          .AddPair(\'pc\', TJSONNumber.Create(44000))
        )
    );

  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(\'13012345678\')
      .Add(\'19786543210\')
    .EndArray
    .Add(\'age\',24)
    .Add(\'size\',1.72)
    .BeginArray(\'adresses\')
      .BeginObject
        .Add(\'adress\',\'foo\')
        .Add(\'city\',\'The wall\')
        .Add(\'pc\',57000)
      .EndObject
      .BeginObject
        .Add(\'adress\',\'foo\')
        .Add(\'city\',\'Winterfell\')
        .Add(\'pc\',44000)
      .EndObject
    .EndArray
  .EndObject;
Memo1.Text := Builder.ToJSON;

 不过,看起来,使用 TJSONBuilder 层次更分明,更优雅。

 

 

 

 

以上是关于Delphi Sysem.JSON 链式写法的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 链式写法

Java链式写法

element-ui表单校验prop的链式写法

Java 链式写法

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

Promise的链式调用三种写法,Promise.all与式调用