如何使用Express将请求正文解析为JSON

时间:2019-05-15 20:26:23

标签: javascript express

我的Express应用程序具有以下设置:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();

// Automatically parse request bodies
app.use(bodyParser.json());

// Automatically allow cross-origin requests
app.use(cors({ origin: true }));

app.post('/', (request, response) => {
    // var message = request.body.message;
    // message.sent_by_admin = true;
    // The above two lines create an error.
    console.log(request.body);
}

从两行注释掉的行中得到的错误是:

TypeError: Cannot set property 'sent_by_admin' of undefined

在打印request.body时,我在控制台中看到以下内容:

{ '{\n    "message": {\n        "text": "hello"\n    },\n    "recipient": {\n        "id": "123"\n    },\n    "sender": {\n        "id": "456"\n    },\n    "timestamp": 1557949612342\n}': '' }

我发送的JSON是这样的:

{
    "message": {
        "text": "hello"
    },
    "recipient": {
        "id": "123"
    },
    "sender": {
        "id": "456"
    },
    "timestamp": 1557949612342
}

如何将request.body转换为正确的JSON,以便可以向数据添加/删除属性并保存?感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您似乎POST正在使用包含换行符的正文。尝试POST-压缩版本更多。

{"message":{"text":"hello"},"recipient":{"id":"123"},"sender":{"id":"456"},"timestamp":1557949612342}

答案 1 :(得分:0)

问题出在客户端上,该客户端正在发送服务器无法解析的错误的JSON数据。一旦尝试了Postman,问题就消失了。