解析JSON时如何防止删除小数点?

cal*_*lum 8 javascript json google-chrome

如果你这样做......

var parsed = JSON.parse('{"myNum":0.0}') ;
Run Code Online (Sandbox Code Playgroud)

然后,当你看parsed.myNum,你得到0.(很公平.)

如果你这样做parsed.myNum.toString(),你会得到"0".

基本上,我正在寻找一种方法将其转换为字符串"0.0".

显然,在现实生活中我不控制JSON输入,我从Web服务获取JSON ...我想使用浏览器的JSON解析器解析JSON,并且能够识别数值00.0.

有没有办法做到这一点,没有手动读取JSON字符串?在这种情况下,这是不可能的,我需要使用浏览器的本机JSON解析器,以提高速度.(顺便说一下,这适用于Chrome扩展程序;无需担心它在其他浏览器中运行.)

awm*_*awm 6

如果0.0没有用JSON中的引号括起来(即它是一个数字而不是一个字符串),那么除非你编写自己的JSON解析器,否则无法将它与0区分开来.


Mik*_*uel 6

无法从JSON.parse或获得数字位数eval。即使EcmaScript委员会采用了IBM的十进制提议,该数字仍将解析为IEEE 754浮点数。

看一下http://code.google.com/p/json-sans-eval/source/browse/trunk/src/json_sans_eval.js,您可以修改该简单的JSON解析器以保留精度信息。