Вопрос

В расширении сервера для SmartFoxServer (который использует Rhino) У меня был кусок JavaScript, похожий на это:

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

Это вызвало ошибки. Что случилось? Потому что свойства это Java Map, когда число вносятся в него, это автообоксируется в java.lang.Double объект. Следовательно, при извлечении его и хранения его в response["xpos"], результат не является обычным номером JavaScript, а JavaObject Тип java.lang.Double. Отказ То 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

Вот как строки обычно преобразуются в носорогах от Java.lang.String до родных строк JavaScript.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top