0

我很好奇 express 用来将对象序列化为 JSON 的算法是什么,以及是否有办法修改它。

我注意到它只序列化对象自己的属性,这使得发送从其他对象继承的对象变得困难。它还省略了值为 的任何属性undefined。我知道从功能上讲,省略它们与包含它们相同并且可以节省带宽,但是包含它们会使 JSON 更容易被阅读它试图弄清楚如何使用 API 的人发现。

无论如何,这是一个关于 express 如何做事情的问题,而不是关于我的代码应该做什么的问题:=)

4

2 回答 2

7

序列化不是express这样,它使用标准的序列化方法stringify。您可以使用参数对事物的序列化方式进行一定程度的修改replacer,但无法强制它显示undefined值。

于 2013-03-04T04:32:37.830 回答
0

它还省略了值未定义的任何属性。

没有值未定义的属性。如果你读取了一个不存在的属性,就会返​​回 undefined,不是因为它的值等于 undefined,而是因为没有这样的属性,所以没有返回值。

未定义的属性集是(无穷大 - 定义的值)。

var o = {};
o.x  // undefined

如果 express 使用下面的算法来查找属性,它永远不会找到 x。

for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(o[key]);
    }
}
于 2013-03-12T20:30:58.367 回答