2016-02-21 76 views
1

我想發佈一個關聯數組到另一個服務器的Node.js,internaly到我的服務器:郵政和解碼的Json在Node.js的

首先服務器後這樣的要求與Request

var request = require('request'); 
request.post('http://localhost:8084/',{ json: {"isposted": {"ok":"val"}}}); 

二服務器的結果是這樣的:

{ '{"isposted":{"ok":"val"}}': '' } 

相反的:

{"isposted":{"ok":"val"}} 

服務器(2日)源代碼解析的數據是這樣的:

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){ 
 
\t \t try 
 
\t \t { 
 
\t \t  data=JSON.parse(data.jsonData); 
 
\t \t } 
 
\t \t catch(e) 
 
\t \t { 
 
\t \t  data=data; 
 
\t \t } 
 
\t \t console.log(data); 
 
    }); 
 
});

+0

什麼問題? – SLaks

+0

有人編輯我的帖子,並刪除了重要信息... – lopata

+0

現在人們對它進行了投票,因爲編輯沒有意義 – lopata

回答

0

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)); 
    } 
}); 
+0

感謝它的工作!但是我也需要qs.parse來解析張貼爲GET的數據,我怎樣才能決定是否應該使用JSON或QS解析它? – lopata

+0

您可以使用[body-parser](https://www.npmjs.com/package/body-parser),並根據「Content-Type」標題決定,這是推薦的方式。 – bolav

+0

謝謝,但我沒有使用快遞,我無法確定如何確定什麼是內容類型。我認爲它是在res [「_ header」]中聲明的,但是從它中提取內容類型似乎很困難 – lopata