JSON.parse中的意外令牌

Tie*_*eDK 5 javascript json

我正在使用node并get从第3方api 请求js到json对象。当我尝试parse数据时出现错误:

SyntaxError: Unexpected token

然后,我尝试解析前端应用程序中的数据,从而导致以下错误(请参见令牌后的空白):

SyntaxError: Unexpected token in JSON at position 294512

所以我试图通过邮递员运行它,看看有什么问题。返回的JSON似乎有效,并且我也通过JSON验证程序运行了我,没有出现问题。

在对结果进行更多调查之后,我发现一个属性(文档类型)在双qoutes内始终具有空白:

{
"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.": ""
  }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否会导致问题,还是其他原因?

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

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

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

小智 1

我刚刚遇到了同样的问题,在我的例子中,结果发现该字符串末尾附加了许多空字符。用 解决了它myString.split(String.fromCharCode(0)).join("")

在我看来,双引号内的空格就像一个完全有效的字符串。我认为这不是你的情况的问题。