我在node.js中创建了set
,我正尝试使用Express.js
或res.send
将res.json
发送给客户端在客户端显示为空。这是我的代码:
app.get('/test-endpoint', function(req, res) {
let set1 = new Set();
set1.add('SOME ITEM');
console.log('Set 1:', set1); // logs out set1 correctly in the terminal (Set 1 Set: { 'SOME ITEM' })
res.json(set1); // when this gets to the client side it is an empty set ({})
});
为什么会这样?这是Express.js问题吗?
答案 0 :(得分:7)
Express response.json
函数使用JSON.stringify
发送数据。并且因为JSON.stringify
除了函数之外还忽略所有符号键控属性。这就是你在客户端收到一个空对象的原因。
console.log(JSON.stringify({ prop: 5, foo() {}, [Symbol('s')]: 'symbol' }));
// -> "{"prop":5}"
console.log(JSON.stringify(new Set([1, 'two', null])));
// -> "{}"