2010-11-22 19 views
2

(Rhino kullanır) Buna benzer JavaScript bir parça vardı: Bu hataya yol açanRhino SmartfoxServer için bir sunucu tarafı uzantısı olarak typeof ve Autoboxing karışıklık

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

. Ne oldu? Özellikler bir Java Map olduğu için, bir sayı girildiğinde, bir java.lang.Double nesnesine otomatik olarak gönderilir. Bu nedenle, onu aldığınızda ve response["xpos"]'da saklarken, sonuç normal bir Javascript numarası değil, JavaObject türünde java.lang.Double. JSON.stringify işlevi bununla başa çıkmak için tasarlanmamış ve çöktü.

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

daha iyi bir yolu var mı:

Böyle bir hack ile düzelttim?

cevap

1

Aşağıdaki interaktif konsol oturumunda gibi Number(properties.get("xpos")) kullanabilirsiniz:

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 

Bu dizeleri genellikle de yerli JavaScript dizeleri java.lang.String dan Rhino nasıl dönüştürüleceğini olduğunu.