Java Rhino、typeof和自动装箱混淆

Java Rhino、typeof和自动装箱混淆,java,javascript,rhino,autoboxing,Java,Javascript,Rhino,Autoboxing,在SmartfoxServer(使用Rhino)的服务器端扩展中,我有一段类似于以下内容的Javascript: response["xpos"] = properties.get("xpos"); send(JSON.stringify(response)); 这导致了错误。怎么搞的?因为properties是一个JavaMap,当一个数字被放入其中时,它会自动装箱到一个Java.lang.Double对象中。因此,当检索它并将其存储在response[“xpos”]中时,结果不是一个常规的

在SmartfoxServer(使用Rhino)的服务器端扩展中,我有一段类似于以下内容的Javascript:

response["xpos"] = properties.get("xpos");
send(JSON.stringify(response));
这导致了错误。怎么搞的?因为properties是一个Java
Map
,当一个数字被放入其中时,它会自动装箱到一个
Java.lang.Double
对象中。因此,当检索它并将其存储在
response[“xpos”]
中时,结果不是一个常规的Javascript数字,而是一个
java.lang.Double
类型的
JavaObject
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
在Rhino中,字符串通常也是这样从java.lang.String转换为本机JavaScript字符串的