Delphi Sysem.JSON 鏈式寫法

      鏈式寫法有不少優勢:連貫、語意集中、簡潔、一鼓作氣、可讀性強。好比要把 3.1415926 中的 59 提取爲一個整數:Pi.ToString().Substring(5,2).ToInteger() 輕車熟路的感受,讓人以爲,哇!好帥的寫法,牛x。框架

      之前覺得只有 TJSONBuilder 才支持鏈式語法,今天發現 TJSONObject 也支持,好比要生成下面的 JSON ui

{
  "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 鏈式寫法,代碼以下:spa

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 ,能夠了解下:code

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 層次更分明,更優雅。orm

相關文章
相關標籤/搜索