加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi Sysem.JSON 链式写法

发布时间:2020-12-15 09:56:10 所属栏目:大数据 来源:网络整理
导读:? ? ? 链式写法有很多优点:连贯、语意集中、简洁、一气呵成、可读性强。比如要把 3.1415926 中的 59 提取为一个整数:Pi.ToString().Substring(5,2).ToInteger() 轻车熟路的感觉,让人觉得,哇!好帅的写法,牛x。 ? ? ? 以前以为只有 TJSONBuilder 才支持

? ? ? 链式写法有很多优点:连贯、语意集中、简洁、一气呵成、可读性强。比如要把 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 层次更分明,更优雅。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读