将java对象分配给node.js变量

Assigning java objecs to node.js variable

本文关键字:node js 变量 分配 java 对象      更新时间:2023-09-26

这是我使用'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

lattitude: 8.6717136经度

76.8168311

时间:java.util.GregorianCalendar[时间= ? areFieldsSet = false, areAllFieldsSet = false,宽大= true,区= sun.util.calendar.ZoneInfo [id ="亚洲/加尔各答",抵消= 19800000,dstSavings = 0, useDaylight = false,转换= 6,lastRule = null], firstDayOfWeek = 1, minimalDaysInFirstWeek = 1,时代= ?,年= 2014,月= 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,小时= 8,HOUR_OF_DAY = 8分钟= 7,第二= 6毫秒= ?,ZONE_OFFSET = ?, DST_OFFSET = ?)

{vehicleId: 922,

纬度:8.6717136,

局域网:76.8168311,

packetTime: {}

}

谁请告诉我为什么'args'对象的'packetTime'变量没有分配'时间'值??为什么显示为{}??

转换为javascript对象后,GregorianCalendar对象的结构并不明显。

但是它在你的第一个日志中工作的原因是,在这种情况下,你将它连接到一个字符串,所以你实际上触发了公历中的toString方法,这似乎使用了Java的方法实现。

换句话说,如果你做了以下任何一个:

console.log('' + time);
console.log(time.toString());
console.log("%s", time);

您将得到预期的输出字符串。

另一方面,console.log(time)不调用对象的toString方法,而是尝试检索哈希对象中的所有键。看起来GregorianCalendar对象没有任何可见的可枚举属性,这就是为什么你会得到一个空结果。

console.log("%j", time);