Json Can';当值为整数时,t将小数部分显示为.0
情况是这样的:Json Can';当值为整数时,t将小数部分显示为.0,json,delphi,Json,Delphi,情况是这样的: uses System.JSON; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var dd:Double; aJsonObj:TJSONObject; begin dd := 100.0; aJsonObj := TJSONObject.Create(TJSONPair.Create('DecimalValue',TJSONNumber.Create(dd))); S
uses
System.JSON;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
dd:Double;
aJsonObj:TJSONObject;
begin
dd := 100.0;
aJsonObj := TJSONObject.Create(TJSONPair.Create('DecimalValue',TJSONNumber.Create(dd)));
ShowMessage(aJsonObj.ToString);
end;
显示
{“小数点:100}
我需要的是
{“小数值”:100.0}
我试图更改JsonFormatSettings
,但找不到添加小数部分的方法。其中一个接受原始字符串值,该值将在生成的JSON字符串中使用,无需进一步处理。它允许您自己对值进行预格式化:
procedure TForm1.Button1Click(Sender: TObject);
var
dd: Double;
aJsonObj: TJSONObject;
begin
dd := 100.0;
aJsonObj := TJSONObject.Create(
TJSONPair.Create('DecimalValue', TJSONNumber.Create(FormatFloat('0.0###', dd, GetJSONFormat))));
try
ShowMessage(aJsonObj.ToString);
finally
aJsonObj.Free;
end;
end;
使用上述代码段,值显示为:
{“小数值”:100.0}
您甚至可以将“任意”
创建为数字:
aJsonObj := TJSONObject.Create(TJSONPair.Create('DecimalValue', TJSONNumber.Create('whatever')));
要获取此(无效)JSON,请执行以下操作:
{“小数值”:随便什么}
旁注:您负责释放您创建的根JSON对象,因为它们没有父对象来管理其生命周期。使用
try..finally
来释放根对象,当您使用完它时,正如您在第一个代码段中看到的那样。太糟糕了,这本身就诱使你不去清理。你能解释一下为什么你需要用尾随的零来格式化数字吗?如果您使用JavaScript中的JSON值,那么这并不重要,因为任何值都表示为双精度64位二进制格式IEEE 754。