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 层次更分明,更优雅。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现