Nodejs接收字符串而不是布尔值

时间:2017-12-05 10:20:21

标签: node.js

我正在尝试使用对象中的布尔值向节点服务器发送http请求。

我在节点req.body中收到:

somekey: "true"

而不是

somekey: true

如何解决?

2 个答案:

答案 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);

<强>演示

&#13;
&#13;
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;
&#13;
&#13;