在服务器侧扩展SmartfoxServer(使用犀牛)我有一个类似的片的Javascript:

response["xpos"] = properties.get("xpos");
send(JSON.stringify(response));

这导致错误。发生了什么?因为性是一个Java Map,当大量投入它,它autoboxed成java.lang.Double对象。因此,检索数据并将其保存在response["xpos"]的时候,结果不是常规的JavaScript数量,但类型JavaObjectjava.lang.Double。该JSON.stringify功能并不意味着句柄和坠毁。

余像这样一个黑客固定它:

response["xpos"] = 1.0 * properties.get("xpos");
send(JSON.stringify(response));

有没有更好的办法?

有帮助吗?

解决方案

可以使用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

这是如何字符串犀牛通常被转化从java.lang.String中到本地JavaScript字串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top