我正在尝试使用对象中的布尔值向节点服务器发送http请求。
我在节点req.body
中收到:
somekey: "true"
而不是
somekey: true
如何解决?
答案 0 :(得分:3)
使用body-parser NPM包。
var bodyParser = require('body-parser');
//You middleware should have this before the handlers.
app.use(bodyParser.json());
编辑:
这是您的AJAX请求应该是什么样子。您可能缺少请求正文的JSON.stringify
部分,或者未在请求标头中设置Content-Type: application/json
。这对我有用。
$.ajax({
url: "https://example.com/hello/login',
type: 'POST',
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
somekey: true
}),
success: function(result) {
console.log(result)
}
});
答案 1 :(得分:1)
由于您要求一种自动化方法,因此可以使用简单的for
循环。
下面的解决方案将解析整数和布尔值。
var testresponse = { "a": "true", "b": "123", "c": "false", "d": "true", "e": "abc" };
for (i in testresponse){
if (testresponse[i] === "true" || testresponse[i] === "false"){
testresponse[i] = JSON.parse(testresponse[i]);
}
else if (!isNaN(testresponse[i])){
testresponse[i] = parseInt(testresponse[i]);
}
}
console.log(testresponse);
<强>演示强>:
var testresponse = { "a": "true", "b": "123", "c": "false", "d": "true", "e": "abc" };
for (i in testresponse){
if (testresponse[i] === "true" || testresponse[i] === "false") testresponse[i] = JSON.parse(testresponse[i]);
else if (!isNaN(testresponse[i])) testresponse[i] = parseInt(testresponse[i]);
}
console.log(testresponse);
&#13;