使用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
?
答案 0 :(得分:4)
您可以使用TJSONNumber
和使用AddPair
的{{1}}重载来创建数字JSON值,如下所示:
TJSONValue
输出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.
这也是help的代码示例中的完成方式。