微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 层次更分明,更优雅。

分享图片

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐