解析JSON时如何防止去掉小数点?

发布于 2024-10-28 09:57:40 字数 515 浏览 1 评论 0原文

如果您这样做...

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

花开柳相依 2024-11-04 09:57:41

无法从 JSON.parseeval 获取位数。即使 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 or eval. 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.

久而酒知 2024-11-04 09:57:41

如果 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.

表情可笑 2024-11-04 09:57:41
... parsed.myNum.toFixed( 1 ) ...

其中 1 是小数位数

编辑:parsed.myNum 是数字,parsed.myNym.toFixed( 1 ) 将是字符串

编辑2:在这种情况下,您需要将值作为字符串 {"myNum":'0.0'} 传递,并在需要计算时进行解析,或者检测小数分隔符、解析的数字,并在需要字符串时使用小数分隔符位置

... parsed.myNum.toFixed( 1 ) ...

where 1 is number of decimal places

Edit: parsed.myNum is number, parsed.myNym.toFixed( 1 ) would be string

Edit2: 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

机场等船 2024-11-04 09:57:41

没关系,00000.000000 如果你尝试 JSON.parse('{"myNum":0.00001}') 你会查看 { myNum=0.0001 } 的值 如果您确实需要它来保存小数,则需要将其保留为字符串 JSON.parse('{"myNum":"0.0" }')

It shouldn't matter, 00000.00000 is 0 if you try JSON.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 string JSON.parse('{"myNum":"0.0"}')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文