我试图做两个不同的项目请求。我在快速项目中使用快速但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;}' :'' }
答案 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());