SyntaxError: Unexpected token / in JSON at position 0

SyntaxError: Unexpected token / in JSON at position 0

您好,在将此标记为重复之前请注意,我确实尝试了 this and 解决方案,但它们都不适合我。我在 Node.JS 中启动一个子进程,进程启动一个 python 文件,最后的 python 脚本将字典列表转储到 JSON 中,这是有效的,因为我解析了 json 在本网站。主要问题是收集的 json 未在 Node.JS 中解析,它显示以下错误

SyntaxError: Unexpected token / in JSON at position 0

代码片段如下

let output = '';
model = spawn("python3", ["./scanners/python/scan.py", code]);

model.stdout.on("data", function (data)
{
    output += data.toString();
    console.log(data.toString());
});

model.stderr.on("data", function (data)
{
    output += data.toString();
    console.log(data.toString());
});

model.on("close", function (exitCode)
{
   let result = JSON.parse(output.trim()); //exception is here
}

我尝试了以下方法来摆脱它,但没有成功。

  1. 修剪了输出,例如output.trim()
  2. 删除了取自 here
  3. 的不可见控制字符代码
  4. 删除了取自
  5. 的其他尾随或前导字符代码
  6. 尝试使用子字符串不考虑位置 0 处的第一个字符然后错误更改,例如位置 0
  7. 的无效标记 v

求助,很郁闷

基本上我无法成功删除导致错误的不可见控制字符,所以下一个方法来自 here,这个接受的答案没有显示删除,但另一种方法是提取来自垃圾字符串的实际 json 然后解析 JSON 使其变为

let output = '';
model = spawn("python3", ["./scanners/python/scan.py", code]);

model.stdout.on("data", function (data)
{
    output += data.toString();
    console.log(data.toString());
});

model.stderr.on("data", function (data)
{
    output += data.toString();
    console.log(data.toString());
});

model.on("close", function (exitCode)
{
   output = output.trim().match(/[{].*.[}]/); //extract actual content from garbage e.g. JSON between [] or {}
   let result = JSON.parse(output.trim());
}