2012-08-08 52 views
0

Possible Duplicate:
JSON array in Node.jsJSON在node.js中

林還挺新的Node.js和進出口工作僅在服務器端,從客戶端回答POST。我需要做的是在參數'theArray'的位置'/ sort'發出一個POST請求,對數組進行排序,刪除所有非字符串值並將結果值作爲JSON返回。 theArray參數將是一個字符串化的JSON數組。 我已經嘗試過這裏的代碼:

case '/sort': 
     if (req.method == 'POST') { 
      res.writeHead(200,{ 
       'Content-Type': 'application/json' 
      }); 
      var fullArr = ""; 
       req.on('data', function(chunk) { 
        fullArr += chunk; 
        }); 
       req.on('end', function() { 
          var query = JSON.parse(fullArr); 
          var arr = ""; 
          var par = query.theArray; 
          arr += par; 
        console.log(arr); 

           function censor(key, value) { 
            if (typeof value == "string") { 
              return value; 
             } 
             return undefined; 
             } 
         var jsonString = JSON.stringify(arr, censor); 
         console.log(jsonString); 
       });   
        res.end(); 


     }; 

break;

但它只是返回相同的東西?我也嘗試用JSON.parse替換qs.parse,它只是返回undefined?有人可以幫助!由於

+0

所以對於解析使用QS或JSON的區別取決於你,你怎麼發這個帖子? urlencoded或JSON字符串的正文? – 3on 2012-08-08 06:15:43

+0

我想我應該對此有點更具體一些。但我無法控制發送的內容。這有點像一個任務。我認爲它是urlencoded,因爲當弄亂一些代碼時,得到了一個錯誤,而console.log顯示未定義,以及一些看起來被編碼的代碼(%2b%3 ...)。但是,無論是解析不粘出非字符串值? – Chad 2012-08-08 06:26:07

回答

0

檢查:由大塊收到

  1. 請求數據。絕對不能保證您收到第一塊中的所有數據。只有在'end'事件觸發後,才需要解析輸入數據。
  2. 在審查函數中,您有未定義的變量'i'。你的意思是'鑰匙'?
+0

謝謝我編輯了上面的代碼。但我認爲我會尋找的價值,因爲給出的參數會是這樣的:{「theArray」:「[[],\」d \「,\」B \「,{},\」b \「 ,12,\「A \」,\「c \」]「}但是我仍然得到相同的結果 – Chad 2012-08-08 06:50:07

+0

上帝我可能只是在想這個,經過4天的嘗試我遇到的每一個代碼我可能會迷惑自己現在爲 – Chad 2012-08-08 06:57:16

+0

如果fullArr爲{「theArray」:「[[],\」d \「,\」B \「,{},\」b \「,12,\」A \「,\」c \ ]「} qs.parse不解析它。爲這樣的事情設計的qs.parse:a = 1&b = 2&c = 3。試試JSON.parse。 – 2012-08-08 07:05:07

0

等到請求已經結束了..然後解析您的fullArray

var data = "" 
req.on('data',function(chunk){data+=chunk}) 
req.on('end',function(){...parse here....}) 
+0

感謝我編輯的代碼以上但仍然得到相同的結果 – Chad 2012-08-08 06:50:39