【问题标题】:JSON in node.js [duplicate]node.js 中的 JSON [重复]
【发布时间】:2012-08-05 05:10:00
【问题描述】:

可能重复:
JSON array in 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();


        };

休息;

但它只是返回相同的东西?我也试过用 JSON.parse 替换 qs.parse 并且它只是返回 undefined?有人可以帮忙吗!谢谢

【问题讨论】:

  • 所以使用 qs 或 JSON 进行解析的区别取决于你,你发送什么到这个 POST ? Body urlencoded 还是 JSON 字符串?
  • 我想我应该更具体一点。但我无法控制发送的内容。这有点像一个任务。我认为它是 urlencoded,因为当弄乱一些代码时,我得到了一个错误,并且 console.log 显示未定义和一些看起来被编码的代码(%2b%3 ...)。但是任何一个解析都没有剔除非字符串值?

标签: json node.js


【解决方案1】:

检查一下:

  1. 请求由块接收的数据。绝对不能保证您会收到第一个块中的所有数据。只有在 'end' 事件触发后才需要解析输入数据。
  2. 在审查函数中,您有未定义的变量“i”。你是说“钥匙”吗?

【讨论】:

  • 感谢我编辑了上面的代码。但我认为我会寻找该值,因为给定的参数类似于: {"theArray":"[[],\"d\",\"B\",{},\"b\" ,12,\"A\",\"c\"]"} 但我仍然得到相同的结果
  • 天哪,我可能只是想多了,在尝试了我遇到的每一个代码 4 天之后,我现在可能让自己感到困惑
  • 如果 fullArr 是 {"theArray":"[[],\"d\",\"B\",{},\"b\",12,\"A\", \"c\"]"} qs.parse 不解析它。 qs.parse 专为这样的事情设计:a=1&b=2&c=3。试试 JSON.parse。
  • 好吧,如果我只是尝试用 fullArr 响应,它会响应它的编码如下“theArray=%5B%5B%5D%2C%22d%22%..'
  • 我也尝试过 JSON.parse,它给出了 undefined:1 的结果,然后给出了一个错误,以这样的代码结果开头 %2C%22A%22%2C%22 SyntaxError: Unexpected令牌h
【解决方案2】:

等到请求结束..然后解析你的 fullArray

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

【讨论】:

  • 感谢我编辑了上面的代码,但仍然得到相同的结果
猜你喜欢
  • 1970-01-01
  • 2015-06-28
  • 2016-01-27
  • 2014-01-23
  • 2018-02-16
  • 2017-05-11
  • 2018-04-24
  • 2015-07-02
  • 2017-09-03
相关资源
最近更新 更多