解析JSON时如何防止去掉小数点?
如果您这样做...
var parsed = JSON.parse('{"myNum":0.0}') ;
那么当您查看 parsed.myNum
时,您只会得到 0
。 (很公平。)
如果您执行 parsed.myNum.toString()
,您将得到 “0”
。
基本上,我正在寻找一种方法将其转换为字符串“0.0”。
显然,在现实生活中我无法控制 JSON 输入,我从 Web 服务获取 JSON...我想使用浏览器的 JSON 解析器解析 JSON,并能够识别数值之间的差异 <代码>0 和0.0
。
除了手动读取 JSON 字符串之外,还有什么方法可以做到这一点吗?在这种情况下这实际上是不可能的,为了速度,我需要使用浏览器的本机 JSON 解析器。 (顺便说一句,这是针对 Chrome 扩展程序的;无需担心它在其他浏览器中的工作情况。)
If you do this...
var parsed = JSON.parse('{"myNum":0.0}') ;
Then when you look at parsed.myNum
, you just get 0
. (Fair enough.)
If you do parsed.myNum.toString()
, you get "0"
.
Basically, I'm looking for a way to turn this into the string "0.0"
.
Obviously, in real life I don't control the JSON input, I get the JSON from a web service... I want to parse the JSON using the browser's JSON parser, and to be able to recognise the difference between the number values 0
and 0.0
.
Is there any way to do this, short of manually reading the JSON string? That's not really possible in this case, I need to use the browser's native JSON parser, for speed. (This is for a Chrome extension by the way; no need to worry about it working in other browsers.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
无法从
JSON.parse
或eval
获取位数。即使 IBM 的十进制提案已被 EcmaScript 委员会采纳,该数字仍将被解析为 IEEE 754 浮点数。查看 http://code .google.com/p/json-sans-eval/source/browse/trunk/src/json_sans_eval.js 用于简单的 JSON 解析器,您可以对其进行修改以保留精度信息。
There's no way to get the number of digits from
JSON.parse
oreval
. Even if IBM's decimal proposal had been adopted by the EcmaScript committee, the number is still going to be parsed to an IEEE 754 float.Take a look a http://code.google.com/p/json-sans-eval/source/browse/trunk/src/json_sans_eval.js for a simple JSON parser that you can modify to keep precision info.
如果 JSON 中的 0.0 没有用引号括起来(即它是数字而不是字符串),则无法将其与 0 区分开,除非您编写自己的 JSON 解析器。
If 0.0 is not enclosed in quotes in your JSON (i.e. it's a number and not a string), then there's no way to distinguish it from 0, unless you write your own JSON parser.
其中
1
是小数位数编辑:
parsed.myNum
是数字,parsed.myNym.toFixed( 1 )
将是字符串编辑2:在这种情况下,您需要将值作为字符串
{"myNum":'0.0'}
传递,并在需要计算时进行解析,或者检测小数分隔符、解析的数字,并在需要字符串时使用小数分隔符位置where
1
is number of decimal placesEdit:
parsed.myNum
is number,parsed.myNym.toFixed( 1 )
would be stringEdit2: in this case you need to pass value as string
{"myNum":'0.0'}
and parsed when calculations is needed or detect decimal separator, parsed number, and use decimal separator position when string is needed没关系,
00000.00000
是0
如果你尝试JSON.parse('{"myNum":0.00001}')
你会查看{ myNum=0.0001 }
的值 如果您确实需要它来保存小数,则需要将其保留为字符串JSON.parse('{"myNum":"0.0" }')
It shouldn't matter,
00000.00000
is0
if you tryJSON.parse('{"myNum":0.00001}')
you'll see a value of{ myNum=0.0001 }
If you really need it to hold the decimal you'll need to keep it a stringJSON.parse('{"myNum":"0.0"}')