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 链式写法,代码如下:

with TJSONObject.Create do
try
  AddPair(name,张三)
  .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,Winterfell)
        .AddPair(pc,TJSONNumber.Create(44000))
      )
   );

  Memo1.Text := TConverters.JsonReformat(ToJSON);
finally
  Free;
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,Winterfell)
        .Add(pc,44000)
      .Endobject
    .Endarray
  .Endobject;
Memo1.Text := Builder.ToJSON;

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

分享图片

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...