2010-11-22 17 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字符串爲好。