在Node.js中将对象转换为JSON字符串

3

我遇到了一个关于将node.js对象转换为json字符串的问题。

var chat = {};
chat.messages = [];
chat.messages['en'] = [];
chat.messages['fr'] = [];
console.log(chat.messages)
console.log(JSON.stringify(chat.messages));

I got

[ en: [], fr: [] ]
[]

我不知道为什么这个无法正确转换。

我刚刚看了一眼我的水晶球,它说转换不正确是因为你没有提供正确的数据? - adeneo
1个回答

9
在这一行中,你将chat.messages初始化为空数组:
chat.messages = [];

这里,你把它用作一个对象:
chat.messages['en'] = [];
chat.messages['fr'] = [];

这些代码行实际上是在数组实例上设置属性。有趣的是,Node会将这些属性包含在正常的 .toString() 结果中(也就是说,在 console.log(chat.messages) 中,你会看到被设置的属性作为数组元素)。
无论如何,要修复这个问题,请将 chat.messages 声明为一个对象:
chat.messages = {};
chat.messages['en'] = [];
chat.messages['fr'] = [];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接