如何正确地将非字符串值添加到TJSONObject?

时间:2017-02-10 14:52:56

标签: json delphi

使用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

1 个答案:

答案 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的代码示例中的完成方式。