Delphi Sysem.JSON 鏈式寫法
阿新 • • 發佈:2018-06-16
tex 可讀性 bubuko 技術分享 splay png 框架 ram The
鏈式寫法有很多優點:連貫、語意集中、簡潔、一氣呵成、可讀性強。比如要把 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 Sysem.JSON 鏈式寫法