gpt4 book ai didi

java - Rhino、typeof 和自动装箱混淆

转载 作者:行者123 更新时间:2023-11-30 11:56:44 28 4
gpt4 key购买 nike

在 SmartfoxServer(使用 Rhino)的服务器端扩展中,我有一段与此类似的 Javascript:

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

这导致了错误。发生了什么?因为 properties 是一个 Java Map,当一个数字被放入其中时,它会自动装箱到一个 java.lang.Double 对象中。因此,当检索它并将其存储在 response["xpos"] 中时,结果不是常规的 Javascript 数字,而是 java.lang 类型的 JavaObject。双JSON.stringify 函数不是用来处理这个问题的,它崩溃了。

我用这样的 hack 修复了它:

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

有没有更好的办法?

最佳答案

您可以使用 Number(properties.get("xpos")),如下面的交互式控制台 session :

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 字符串的典型方式。

关于java - Rhino、typeof 和自动装箱混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com