Node.js 在解析socket.io对象时,如何使[object]可读
我想在socket.io中查看我的房间列表 但是控制台只返回[object] 我的密码是这个Node.js 在解析socket.io对象时,如何使[object]可读,node.js,socket.io,Node.js,Socket.io,我想在socket.io中查看我的房间列表 但是控制台只返回[object] 我的密码是这个 io.on('connection', function (socket) { var rooms = io.sockets.adapter.rooms; console.log('rooms: '+rooms); } 我的控制台日志是 rooms: [object Object] 这有点奇怪 我写代码 for (var key in rooms){ console.log('k
io.on('connection', function (socket) {
var rooms = io.sockets.adapter.rooms;
console.log('rooms: '+rooms);
}
我的控制台日志是
rooms: [object Object]
这有点奇怪
我写代码
for (var key in rooms){
console.log('key: '+key);
}
然后,控制台写入所连接客户端的socket.id
比如
key: iFUdbwRtB5oRMcf3AAAA
从此改变
console.log('rooms: '+rooms);
为此:
console.log('rooms: ', rooms);
在字符串操作中使用对象会导致调用.toString()
,对象的默认字符串转换为[object object]
。使用console.log()直接输出对象将显示对象的实际内容,而不仅仅是尝试一般的字符串转换。对此进行更改
console.log('rooms: '+rooms);
为此:
console.log('rooms: ', rooms);
在字符串操作中使用对象会导致调用
.toString()
,对象的默认字符串转换为[object object]
。使用console.log()直接输出对象将显示对象的实际内容,而不仅仅是尝试一般的字符串转换。您可以简单地字符串化房间:
console.log('rooms: ', JSON.stringify(rooms, null, 10));
您可以简单地将房间串起来:
console.log('rooms: ', JSON.stringify(rooms, null, 10));
尝试像JSON.parse(JSON.stringify(key))那样解析您的键对象;尝试像JSON.parse(JSON.stringify(key))那样解析您的键对象<当存在循环引用时,code>JSON.stringify()不起作用,我认为
io.sockets.adapter.rooms
中可能存在循环引用。另外,如果您只是让console.log()
为您输出对象,那么您可以更轻松地在控制台窗口中导航和查看结果(因为您可以展开和折叠复杂的对象)。JSON.stringify()当存在循环引用时,
不起作用,我认为在io.sockets.adapter.rooms
内部可能存在循环引用。另外,如果让console.log()
为您输出对象,那么您可以更轻松地在控制台窗口中导航和查看结果(因为您可以展开和折叠复杂的对象)。这是一个很好的观点。帮助我不用花几个小时追踪行为。这是一个很好的观点。帮助我不用花几个小时来追踪行为。