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