2012-08-08 26 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