Pregunta

En una extensión del lado del servidor para SmartfoxServer (que utiliza Rhino) que tenía un pedazo de Javascript similar a esto:

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

Esto provocó errores. ¿Que pasó? Dado que las propiedades es un Map Java, cuando un número se pone en él, se autoboxed en un objeto java.lang.Double. Por lo tanto, cuando se recuperan y almacenándolo en response["xpos"], el resultado no es un número Javascript regular, pero un tipo de JavaObject java.lang.Double. La función JSON.stringify no estaba destinado a mango eso y se estrelló.

Me fijo con un corte como este:

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

¿Hay una mejor manera?

¿Fue útil?

Solución

Se puede utilizar Number(properties.get("xpos")), como en la siguiente sesión de consola interactivo:

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

Así es como las cadenas se convierten normalmente en Rhino de java.lang.String a cadenas JavaScript nativos también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top