鏈式寫法有不少優勢:連貫、語意集中、簡潔、一鼓作氣、可讀性強。好比要把 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