You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中是否有更便捷的嵌套JSON创建方式?

优化Delphi嵌套JSON对象的创建写法

你可以通过直接保存子对象引用或者链式嵌套创建的方式,避免反复调用GetValue查找子对象,让代码更简洁高效:

方法一:用变量保存子对象引用

这种方式可读性强,逻辑清晰,适合层级较多的场景:

var
  jo, dataObj, detailsObj: TJsonObject;
begin
  try
    jo := TJsonObject.Create;
    
    // 创建并保存data子对象
    dataObj := TJsonObject.Create;
    jo.AddPair('data', dataObj);
    // 创建并保存details子对象
    detailsObj := TJsonObject.Create;
    dataObj.AddPair('details', detailsObj);
    // 直接操作details子对象
    detailsObj.AddPair('foo', 'bar');

  finally
    FreeAndNil(jo);
  end;
end;

方法二:链式嵌套创建

如果层级不多,这种写法更紧凑,无需额外变量:

var
  jo: TJsonObject;
begin
  try
    jo := TJsonObject.Create;
    
    jo.AddPair('data', TJsonObject.Create.AddPair('details', TJsonObject.Create.AddPair('foo', 'bar')));

  finally
    FreeAndNil(jo);
  end;
end;

注:Delphi的TJSONObject.AddPair会返回当前对象本身(支持链式调用),所以可以直接在创建子对象后连续调用AddPair。父对象释放时会自动递归释放所有子对象,无需手动释放子节点。

方法三:利用TJSONObject的构造函数重载(Delphi 10.3+)

部分Delphi版本支持直接在构造函数中传入键值对,进一步简化:

var
  jo: TJsonObject;
begin
  try
    jo := TJsonObject.Create(
      TJSONPair.Create('data', TJsonObject.Create(
        TJSONPair.Create('details', TJsonObject.Create(
          TJSONPair.Create('foo', 'bar')
        ))
      ))
    );

  finally
    FreeAndNil(jo);
  end;
end;

这几种写法都能生成你需要的JSON结构,且避免了GetValue的查找操作,代码结构更简洁高效。

内容的提问来源于stack exchange,提问作者Magnus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:04:52