[英]Assigning java objecs to node.js variable
這是我的代碼,使用“ java”模塊在node.js中創建Java對象。 創建了四個java對象,我希望它們一起作為一個對象。 所以我正在使用變量“ args”來保存這些java對象。
var java = require("java");
java.classpath.push("commons-lang3-3.1.jar");
java.classpath.push("commons-io.jar");
var soap = require('soap');
var vehId = java.newInstanceSync("java.lang.Integer", 922);
var lattitude = java.newInstanceSync("java.lang.Double", 8.6717136);
var longitude = java.newInstanceSync("java.lang.Double", 76.8168311);
var GregorianCalendar = java.import('java.util.GregorianCalendar');
var time = new GregorianCalendar(2014,4,29,8,7,6);
console.log('vehId: '+vehId+'\nlattitude: '+lattitude+'\nlongitude '+longitude+'\ntime: '+time+'\n\n');
var args = {
vehicleId : vehId,
lat : lattitude,
lan : longitude,
packetTime: time
};
console.log(args);
這是我得到的輸出。
vehId:922
緯度:8.6717136
經度76.8168311
時間:java.util.GregorianCalendar [time = ?, areFieldsSet = false,areAllFieldsSet = false,lenient = true,zone = sun.util.calendar.ZoneInfo [id =“ Asia / Calcutta”,offset = 19800000,dstSavings = 0, useDaylight =假,過渡= 6,lastRule =空],Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = ?, YEAR = 2014,MONTH = 4,WEEK_OF_YEAR = ?, WEEK_OF_MONTH = ?, DAY_OF_MONTH = 29,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,HOUR = 8,HOUR_OF_DAY = 8,MINUTE = 7,SECOND = 6,微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]
{vehicleId:922,
拉:8.6717136,
lan:76.8168311,
packetTime:{}
}
有人告訴我為什么'args'對象的'packetTime'變量沒有分配'time'值嗎? 為什么顯示為{} ???
轉換為JavaScritp對象后,如何構造GregorianCalendar對象還不清楚。
但是它在您的第一個日志中起作用的原因是,在這種情況下,您將其連接為字符串,因此實際上是在Gregorian日歷中觸發了toString方法,該日歷似乎使用了Java方法的實現。
換句話說,如果您執行以下任一操作:
console.log('' + time);
console.log(time.toString());
console.log("%s", time);
您將獲得預期的輸出字符串。
另一方面, console.log(time)
不會調用對象的toString方法,而是嘗試檢索哈希對象中的所有鍵。 看起來GregorianCalendar對象沒有任何可見的可枚舉屬性,這就是為什么您將得到空結果的原因。
console.log("%j", time);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.