如何在Lazarus应用中生成JSON时避免浮点值以科学计数法显示
解决Lazarus中JSON浮点数科学计数法显示问题
你可以通过以下两种方法让JSON中的浮点数以常规格式(如10.01)输出,而非科学计数法:
方法一:通过TJSONConfig全局控制格式化规则
在序列化JSON对象时,使用TJSONConfig指定浮点数的输出格式,能统一控制所有浮点数的显示方式:
var JsonObj: TJSONObject; JSONConfig: TJSONConfig; ResultJSON: string; begin JsonObj := TJSONObject.Create; try JsonObj.Add('nome', 'Lucas'); JsonObj.Add('idade', 30); JsonObj.Add('ativo', True); JsonObj.Add('valor', 10.01); // 创建配置对象并设置浮点数格式 JSONConfig := TJSONConfig.Create(nil); try // 保留两位小数,可根据需求调整(如%.4f保留四位小数) JSONConfig.FloatFormat := '%.2f'; // 格式化JSON并获取结果 ResultJSON := JsonObj.Format(JSONConfig); finally JSONConfig.Free; end; // 此处可输出或返回ResultJSON finally JsonObj.Free; end; end;
方法二:单独指定单个浮点数的格式
如果只需要调整某个特定浮点数的显示,可直接创建TJSONNumber对象,传入格式化后的数值字符串:
var JsonObj: TJSONObject; begin JsonObj := TJSONObject.Create; try JsonObj.Add('nome', 'Lucas'); JsonObj.Add('idade', 30); JsonObj.Add('ativo', True); // 将浮点数格式化为指定字符串后,作为TJSONNumber添加到JSON对象 JsonObj.Add('valor', TJSONNumber.Create(Format('%.2f', [10.01]))); // 此处可序列化并输出JSON finally JsonObj.Free; end; end;
注意:第二种方法需确保格式化后的字符串能被正确解析为JSON数值类型,避免格式错误。
内容的提问来源于stack exchange,提问作者Roberto Henrique
相关产品推荐
相关产品推荐

