2010-11-22 78 views
2

在服务器侧扩展SmartfoxServer(使用犀牛)我有一个类似的片的Javascript:犀牛的typeof和自动装箱混乱

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

这导致错误。发生了什么?因为属性是Java Map,所以当一个数字被放入它时,它会自动装入一个java.lang.Double对象中。因此,当检索它并将其存储在response["xpos"]中时,结果不是一个普通的Javascript数字,而是java.lang.Double类型的JavaObjectJSON.stringify函数不是为了处理它,而是崩溃。

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

有没有更好的办法:

我有这样一个黑客修复它?

回答

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 

这是怎么串犀牛通常被转化从java.lang.String中到本地JavaScript字符串为好。