Dans une extension côté serveur pour SmartFoxServer (qui utilise Rhino) J'ai eu un morceau de Javascript semblable à ceci:Rhino, typeof et autoboxing confusion
response["xpos"] = properties.get("xpos");
send(JSON.stringify(response));
Cela a provoqué des erreurs. Qu'est-il arrivé? Parce que les propriétés sont Java Map
, lorsqu'un nombre est mis à l'intérieur, il est autooboxed dans un objet java.lang.Double
. Par conséquent, lors de la récupération et de l'enregistrer dans response["xpos"]
, le résultat n'est pas un numéro JavaScript normal mais un JavaObject
de type java.lang.Double
. La fonction JSON.stringify
n'était pas destinée à gérer cela et il s'est écrasé.
Je l'ai fixé avec un hack comme celui-ci:
response["xpos"] = 1.0 * properties.get("xpos");
send(JSON.stringify(response));
Y at-il une meilleure façon?