Delphi中使用JSON格式数据

Delphi2010 已经自带JSON的解析及生成引擎,见:DBXJSON 单元

通过如下代码:

procedure TForm1.btn1Click(Sender: TObject);
var
  LJsonObj: TJSONObject;
  LJStr: TJSONString;
begin
  LJsonObj := TJSONObject.Create;
  try
    LJStr := TJSONString.Create('1233');
    LJStr.Owned := True;

    LJsonObj.AddPair('Data', LJStr);
    CodeSite.Send(LJsonObj.ToString);
  finally
    LJsonObj.Free;
  end;
end;

即可生成JSON格式的数据:{"Data":"1233"}

注意:如果想由TJSONObject自己管理其中的对象,需要将引用对象的Owned属性设置成True。

参见TJSONObject源码:

destructor TJSONObject.Destroy;
var
  Member: TJSONAncestor;
  I: Integer;
begin
  if FMembers <> nil then
  begin
    for i := 0 to FMembers.Count - 1 do
    begin
      Member := TJSONAncestor(FMembersI);
      if Member.GetOwned then
        Member.Free;
    end;

    FreeAndNil(FMembers);
  end;
  inherited Destroy;
end;