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 recodedatetime、recodedate、recodetime、recodeyear ... 修改时间

Delphi安全结束线程

Delphi listview1 加载文件列表用法

Delphi 如何获得其他进程的token

Delphi types of actual and formal var parameters must be identical

Delphi xe5 实现获取本地的ip地址

Delphi 判断dll动态链接库是否可用

Delphi 判断当前网络连接方式

Delphi 压缩图片(bmp、jpg、png)

Delphi 10 seattle中录制音频

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...