2010-11-22 6 views
2

をオートボクシングは、私はこれに類似のJavascriptの作品を持っていた:サイ、typeof演算と(サイを使用しています)SmartfoxServerするためのサーバ側の拡張では混乱

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

これは、エラーを引き起こしました。何が起こった?プロパティはJava Mapなので、数値を入れると、java.lang.Doubleオブジェクトに自動ボクシングされます。したがって、検索してresponse["xpos"]に格納すると、その結果は通常のJavaScriptの番号ではなく java.lang.Doubleの値になります。 JSON.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 

これは、文字列は、一般的にだけでなく、ネイティブのJavaScript文字列にjava.lang.StringでからRhinoで変換する方法です。

関連する問題