使用TJSONObject,我注意到它的AddPair函数具有以下重载:

function AddPair(const Pair: TJSONPair): TJSONObject; overload;
function AddPair(const Str: TJSONString; const Val: TJSONValue): TJSONObject; overload;
function AddPair(const Str: string; const Val: TJSONValue): TJSONObject; overload;
function AddPair(const Str: string; const Val: string): TJSONObject; overload;


特别是,我注意到添加整数,日期时间等非字符串值没有重载...
由于这个原因,调用ToString函数,每个值都显示为双引号:


  {“ MyIntegerValue”:“ 100”}


根据我在this答案中所读的内容,它与非字符串值的JSON标准背道而驰。
如何将非字符串值添加到TJSONObject

最佳答案

您可以使用TJSONNumber和使用AddPairTJSONValue重载来创建数字JSON值,如下所示:

program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils, System.JSON;

var
  JSON: TJSONObject;
begin
  JSON := TJSONObject.Create;
  try
    JSON.AddPair('MyIntegerValue', TJSONNumber.Create(100));
    writeln(JSON.ToString);
    readln;
  finally
    JSON.Free;
  end;
end.


输出{"MyIntegerValue":100}

这也是在help的代码样本中完成的。

08-06 03:40