سؤال

في امتداد جانب الخادم لـ SmartFoxServer (الذي يستخدم وحيد القرن) كان لدي قطعة من JavaScript مماثلة لهذا:

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

هذا تسبب في أخطاء. ماذا حدث؟ لأن الخصائص هي جافا 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