【发布时间】:2015-10-05 00:11:09
【问题描述】:
当我将数据从客户端发送到服务器时,我使用的框架 (angularjs) 使用 JSON.stringify() 将数据转换为 JSON。 (它可能使用angular.toJson(),但它使用JSON.stringify() 来完成这项工作。)我猜stringify 函数在下面调用toString()...
问题是非常小的和非常大的值会用科学计数法写出来。这对我来说是个问题,因为服务器很难确定如何处理该值,从而导致保存数据出现问题。我希望我的对象被字符串化为十进制表示,例如.0000004 而不是 4e-7。
这可能吗?是否可以全局执行此操作,这样我就不必修改每个 POST 到数据库?
【问题讨论】:
-
"服务器很难确定如何处理该值" ... ??
4e-7是一个非常好的数字,它的具体含义与0.0000004相同。你的服务器端 JSON 工具是什么? -
我刚刚在chrome下测试过,JSON.stringify下面没有调用toString。
JSON.stringify({toString: function(){return "foo";}});退货"{}" -
c# - JavaScriptSerializer 正在将值转换为对象。然后我把它扔到一个 DataTable 中,我必须猜测数据类型。
-
数值的科学记数法是明确有效的 JSON。如果您的服务器端 JSON 解析器无法将该表示正确地转换为某种数字形式,那么我会说它是一个无功能的 JSON 解析器。
-
另请注意,您的 JSON 解析器从 JSON 中的数值构造的 whatever 数字类型,几乎 100% 确定无论输入值是否为科学计数法。 可能整数和非整数的处理方式不同,但如果
0.0000004和4e-7在解析 JSON 后以完全相同的数值结束,我会感到非常惊讶。
标签: javascript json angularjs