在JSON Stringify之后无法使用parseFloat

时间:2013-04-18 18:50:41

标签: javascript json stringify

我有一行代码 -

var latitude = JSON.stringify(place.lat);

当我发出警报(纬度)时 - 它给我输出“33.232342”。但是当我这样做时我想要这个数字

var latitude = parseFloat(JSON.stringify(place.lat));

我得到了NaN。有人能告诉我问题可能是什么吗?

由于

6 个答案:

答案 0 :(得分:1)

您的place.lat已经是string。因此,JSON.stringify()""33.232342"" 只是:

parseFloat(place.lat);

答案 1 :(得分:0)

JSON.stringify将原语转换为字符串,所以:

JSON.stringify(5.1)

返回5个字符的字符串

"5.1"

将此类值传递到parseFloat会产生NaN根本不要JSON.stringify,您的代码应该可以正常工作。

值得注意的是,JSON spec仅允许对象和数组作为JSON表示中的顶级元素,因此它不符合规范“JSON-ify”原始数字(但您的浏览器会执行此操作)反正)。

答案 2 :(得分:0)

问题是place.lat是一个字符串,所以当你对它进行字符串化时,你会得到一个带引号的字符串。

相同的结果
parseFloat(JSON.stringify("3.5"))

NaN

解决方案是直接解析place.lat:parseFloat(place.lat)

如果要解析带引号的字符串中的数字,也可以执行

parseFloat(str.slice(1,-1))

答案 3 :(得分:0)

问题源于此:

JSON.stringify(place.lat)会返回"' 20.0120132312'",其中包含'个前导parseFloat(place.lat); 。只需使用:

{{1}}

答案 4 :(得分:0)

如果它已经是对象,你为什么要JSON.stringify

只需parseFloat(place.lat)

答案 5 :(得分:0)

您必须调用:

parseFloat(JSON.parse(latitude))