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