Response.json未显示值为undefined
我正在实现一个节点api来处理Mongo数据库中的数据。查询给了我正确的JSON
。当我将JSON
发送到React客户端时,包含undefined
的字段未显示。我究竟做错了什么?有解决办法吗?
要缩小我的问题范围,请将以下代码添加到节点服务器。 console.log
将打印正确的输出。例如,它会包含status: undefined
,但res.json
不会包含任何值为undefined
的节点。
app.get("/test", function(req, res) {
let test = {
document: "test",
data: {
products: [
{
id: 123,
type: "smartphone",
name: "Motorola Moto G",
instock: true,
status: undefined,
link: null
},
{
id: 456,
type: "notsosmartphone",
name: "Samsung S7",
instock: false,
status: "burning",
link: undefined
}
],
length: 2,
date_created: '20161015T09:15',
status: undefined,
person: {name: "Kathy", age: 30, cute: true},
arr:[123,"abc",{"a":"1"},{"b":"2"},{"c":"3"}]
}
};
console.log(test);
res.json(test);
});
答案 0 :(得分:4)
Expressjs response.json()
方法uses JS JSON.stringify()
方法将对象转换为JSON字符串。
JSON.stringify()
explicitly removes undefined
values from objects,只要它被称为undefined
is not a valid JSON value type。
您可以使用replacer
function明确覆盖undefined
行为,并将值设置为null
,以便在回复时返回。
示例:
app.set('json replacer', function (key, value) {
// undefined values are set to `null`
if (typeof value === "undefined") {
return null;
}
return value;
}
);