Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript解析JSON错误,但在验证程序中工作正常_Javascript_Node.js_Json_Parsing - Fatal编程技术网

Javascript解析JSON错误,但在验证程序中工作正常

Javascript解析JSON错误,但在验证程序中工作正常,javascript,node.js,json,parsing,Javascript,Node.js,Json,Parsing,当我尝试解析此JSON(Discord webhook)时: { “内容”:“这`支持`.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 将变量传递给验证器时不会发生同样的情况,因为它将被分配给一个局部变量: http.request(options, function(re

当我尝试解析此JSON(Discord webhook)时:

{

“内容”:“这`支持`.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

将变量传递给验证器时不会发生同样的情况,因为它将被分配给一个局部变量:

http.request(options, function(res) {
  var buffers = []
  res
    .on('data', function(chunk) {
      buffers.push(chunk)
    })
    .on('end', function() {
      JSON.parse(Buffer.concat(buffers).toString())
    })
})

编辑

根据您更新的问题,可能是因为您已经使用
bodyParser.json()
作为中间件,并且当您使用它时,
req.body
已经是一个对象,您不需要再次解析它


尝试解析已解析的对象将抛出错误。

这类似于不使用JSONStream:

http.request(options, function(res) {
  var stream = JSONStream.parse('*')
  res.pipe(stream)
  stream.on('data', console.log.bind(console, 'an item'))
})
如果将它与JSONStream一起使用,它将类似于:

const _ = require('lodash');

let htmlDecoder = function(encodedStr){
    return _.unescape(encodedStr);
}

htmlDecoder(JSON);
(或)

以下是解决此问题的一些步骤

您可以使用lodash来解决此问题

导入lodash并调用unescape()


当你说当你使用一个网站时,它意味着什么?它取决于你对
JSON.parse()
的输入,为什么不使用编辑器来复制它呢?控制台.log(typeof req.body)的输出是什么
?也不能调用包含JSON字符串的变量
JSON
,否则JSON.parse将引发另一个错误。该变量(无论名称如何)已包含对象,无需解析。最简单的示例:
JSON.parse({})
。不要重新分析对象!请查看更新。@新手需要帮助可能是因为您使用的是
bodyParser.json()
?在这种情况下,
req.body
已经是一个对象,因此无法解析它again@RookieNeedingHelpreq.body已经是一个对象,您不需要解析它。JSON.parse只对字符串起作用,因此该对象被强制为字符串并尝试解析
“[object object]”
谢谢,我不知道它会解析它。
const _ = require('lodash');

let htmlDecoder = function(encodedStr){
    return _.unescape(encodedStr);
}

htmlDecoder(JSON);