在SmartfoxServer(使用Rhino)的服务器端扩展中,我有一段类似于此的Javascript:
response["xpos"] = properties.get("xpos");
send(JSON.stringify(response));
这导致了错误。发生了什么?因为属性是Java Map
,所以当一个数字放入其中时,它会被自动装入java.lang.Double
对象。因此,在检索它并将其存储在response["xpos"]
中时,结果不是常规Javascript编号,而是JavaObject
类型java.lang.Double
。 JSON.stringify
函数并不意味着处理它并且崩溃了。
我用这样的黑客修复了它:
response["xpos"] = 1.0 * properties.get("xpos");
send(JSON.stringify(response));
有更好的方法吗?
答案 0 :(得分:1)
您可以使用Number(properties.get("xpos"))
,如以下交互式控制台会话中所示:
js> x=java.lang.Double(2)
2.0
js> typeof x
object
js> x instanceof java.lang.Double
true
js> y=Number(x)
2
js> typeof y
number
这是字符串通常在Rhino中从java.lang.String转换为本机JavaScript字符串的方式。