Pergunta

Em uma extensão lateral do servidor para o SmartFoxServer (que usa rinoceronte), eu tinha um pedaço de JavaScript semelhante a este:

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

Isso causou erros. O que aconteceu? Porque as propriedades são um java Map, quando um número é colocado nele, ele é autoboxado em um java.lang.Double objeto. Portanto, ao recuperá -lo e armazená -lo em response["xpos"], o resultado não é um número regular de javascript, mas um JavaObject do tipo java.lang.Double. o JSON.stringify A função não foi feita para lidar com isso e travou.

Eu consertei com um hack como este:

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

Existe uma maneira melhor?

Foi útil?

Solução

Você pode usar Number(properties.get("xpos")), como na seguinte sessão de console interativo:

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

É assim que as cordas são tipicamente convertidas em rinoceronte de java.lang.string em strings nativos de JavaScript também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top