JSON.parse中出现了意外的标记

6
我正在使用node和request js从第三方api中获取json对象。 当我尝试解析数据时,出现错误:SyntaxError:Unexpected token
然后我尝试在前端应用程序中解析数据,结果出现以下错误(请参见标记后的空格):SyntaxError:JSON中未预期的令牌位置294512处的令牌
所以,我尝试通过Postman运行它,看看问题出在哪里。 返回的JSON似乎是有效的,而且我还通过JSON验证器运行了它而没有问题。
在进一步调查结果后,我发现一个属性(文档类型)始终在双引号内有一个空格:
{
"F24434": {
    "Posting Date": "29-10-12",
    "Open": "No",
    "On Hold": "",
    "Document Type": " ",
    "External Document No.": "",
    "Due Date": "29-10-12",
    "Description": "xxxx",
    "Order No.": "",
    "Currency Code": "DKK",
    "Remaining Amount": "0",
    "Original Amount": "0",
    "Amount": "0",
    "User ID": "xxx",
    "Systemdato": "29-10-12",
    "Entry No.": "607121",
    "Vessel No.": "",
    "Port No.": ""
  }
}

我不确定这是否是问题的原因,还是可能是其他原因?

不幸的是,我没有直接访问API的权限,因此无法更改数据结构的方式。

解决方案 事实证明,问题是双引号内的空格。解决方案是在解析之前删除所有空格:

.replace(/\s/g, '');


1
在流的第294512个字节处,JSON是什么样子? - Rowland Shaw
我不确定是空格的问题。我似乎无法正确地定位错误。我尝试使用 trim(),但没有成功。 - TietjeDK
如果您有JSON字符串,可以尝试使用console.log(s[294512])来记录有问题的字符。如果没有打印任何内容,则可能是编码问题。 - bigblind
你如何获取它?你可以通过正则表达式获得纯文本,清晰的“文档类型”,然后解析为JSON吗? - br3t
嗯,你可能是对的。但我看不到任何字符。 - TietjeDK
显示剩余10条评论
1个回答

1
我刚遇到了同样的问题,在我的情况下,发现字符串末尾附加了许多空字符。使用myString.split(String.fromCharCode(0)).join("")解决了这个问题。
双引号内的空格对我来说看起来像一个完全有效的字符串。我不认为这是你的问题所在。

对于那些在使用Blowfish解密后无法解析JSON的人来说,这就是你们的解决方案。 - Fatih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接