两个不同的项目请求json解析错误

时间:2016-12-24 07:54:27

标签: node.js express request

我试图做两个不同的项目请求。我在快速项目中使用快速但json解析错误请求使用请求模块其他项目

示例对象

var data= {
    User: {
        ID: 123
    },
    Text: 'hello world'
};

 request.post({
            headers: { 'content-type': 'application/x-www-form-urlencoded' },
            url: "url/test",
            body: JSON.stringify(data)
        }, function (error, response, body) {

            logger.debug("error : ", error);
            logger.debug("body : ", body);

        });

听一个快速项目

app.post('/test', function(req, res) {

    try {
        res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
        res.header('Access-Control-Allow-Methods', 'POST');
        res.header('Access-Control-Allow-Headers', 'Content-Type');

        console.log(req.body);
        var x = JSON.parse(req.body);

        res.send(200);

    } catch (error) {

        res.send(200);
    }
});

req.body是

{' {" User":{" ID":123}," Text":" hello world"} ' :'' }

erorr是

SyntaxError:位置1的JSON中的意外标记o

击败额外的单引号{' {"用户":{" ID":123},"文字":" hello world& #34;}' :'' }

2 个答案:

答案 0 :(得分:0)

req.body是一个对象,而不是一个简单的字符串。 Javascript解释器已经解析了它。这就是为什么你看到神秘的hhu消息,尽管JSON中没有“o”; JSON.parse正在尝试对非字符串执行字符串操作。

答案 1 :(得分:0)

你应该为你的快递app配置添加一些选项,并使用npm install body-parser安装body-parser包,如下所示:

var bodyParser = require('body-parser');
app.use(bodyParser.json({
keepExtensions: true
}));
app.use(bodyParser.urlencoded());