使用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
和使用AddPair
的TJSONValue
重载来创建数字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的代码样本中完成的。