【发布时间】:2019-05-06 20:39:34
【问题描述】:
我在服务中收到以下对象,但在解析此对象时出现错误
SyntaxError: Unexpected token : in JSON at position 603069
代码:
var data1 = [];
// Process a chunk of data. This may be called multiple times.
req
.on("data", function(chunk) {
// Append to buffer
data1.push(chunk);
})
.on("end", function() {
var buffer = Buffer.concat(data1);
console.info("Buffer Data Request Body: " + buffer);
buffer = buffer.toString("utf8");
var partsOfStr = buffer.split("&");
//This line gives error
var obj = JSON.parse(
decodeURI(buffer.replace(/&/g, '","').replace(/=/g, '":"'))
);
对象:
{
"type" : "NewThreadVoice",
"incidentId": "398115",
"channel" : "Mobile",
"data": a huge base 64 string
"fileName": "1.aac",
"contentType" : "aac",
"contactId" : "954344"
}
当我将 base64(数据值)减少到一半时,它可以工作。
【问题讨论】:
-
=是 base64 中的有效字符,因此它可能是您的 base64 字符串的一部分。当您执行.replace(/=/g, '":"')时,您可能会替换该字符串的一部分,创建类似"data": "aacasc":"asdasd",的内容,这不是有效的JSON。 -
谢谢。它有帮助
标签: node.js