我很好奇express用于将对象序列化为JSON的算法是什么,以及是否有修改它的方法。
我注意到它只序列化对象自己的属性,这使得发送从其他对象继承的对象变得困难。它还省略了值为undefined
的任何属性。我理解,在功能上,省略它们与包含它们相同并节省带宽,但包括它们使得JSON更容易被人们阅读,因为它试图弄清楚如何使用API。
在任何情况下,这都是一个更多关于表达事物的问题而不是关于我的代码应该做什么的问题:=)
答案 0 :(得分:7)
序列化不是express
,它使用标准序列化方法stringify。您可以使用replacer
参数对事物的序列化进行一定程度的修改,但不能强制它显示undefined
值。
答案 1 :(得分:0)
它还省略了任何值未定义的属性。
没有未定义值的属性。如果你读取了一个不存在的属性,将返回undefined,而不是因为它的值等于undefined,而是因为没有值,因为没有这样的属性。
未定义属性的集合是(无穷大 - 定义的值)。
var o = {};
o.x // undefined
如果express使用以下算法来查找属性,它将永远不会找到x。
for (var key in o) {
if (o.hasOwnProperty(key)) {
console.log(o[key]);
}
}