我正在尝试将关联数组发布到另一个 Node.js 服务器,在我的服务器内部:
第一台服务器使用 Request 执行类似这样的 POST
请求:
var request = require('request');
request.post('http://localhost:8084/',{ json: {"isposted": {"ok":"val"}}});
第二个服务器的结果是这样的:
{ '{"isposted":{"ok":"val"}}': '' }
而不是:
{"isposted":{"ok":"val"}}
服务器解析数据的(第二)源代码是这样的:
var http = require('http');
var qs = require('qs');
var processRequest = function(req,callback) {
var body='';
req.on('data', function(data) { body+=data; });
req.on('end', function() { callback(qs.parse(body)); });
}
var server2 = http.createServer(function(req, res) {
processRequest(req,function(data){
try
{
data=JSON.parse(data.jsonData);
}
catch(e)
{
data=data;
}
console.log(data);
});
});
最佳答案
qs解码 JSON 的包是错误的,如下所示:callback(qs.parse(body));
。尝试像这样使用 JSON.parse:callback(JSON.parse(body));
试试这个来支持不同类型的编码:
req.on('end', function(){
if ('application/json' === req.headers['content-type']) {
callback(JSON.parse(body));
}
else {
callback(qs.parse(body));
}
});
关于javascript - 在 Node.js 中发布和解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539964/