JSON结构输出

时间:2017-03-02 11:52:11

标签: json node.js

我正在完成学校作业Node.js,并且无法正确输出输出。 res.end部分不起作用,但res.end(stdout);有效。为什么呢?

case "/status":
    /**
     * Run child process "uname -a".
     */
    cp.exec("uname -a", (error, stdout, stderr) => {
        if (error || stderr) {
            // Do something with the error(s)
            console.log("Something went wrong...", error, stderr);
        }

        // status route
        res.writeHead(200, { "Content-Type": "application/json" });
        res.end({
            "uname": stdout
        });
    });
break;

1 个答案:

答案 0 :(得分:1)

正如Node.js docs中所指定的,res.end只能将字符串或缓冲区 - 或根本没有 - 作为其第一个参数。如果您希望使用它发送JSON,您必须设置内容类型(您已经完成)并对对象进行字符串化:

res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({
    "uname": stdout
}));

这实际上是what Express.js does when you call res.send/res.json on an object