JSON.parse无缘无故失败

JSON.parse failing without reason

本文关键字:失败 无缘无故 parse JSON      更新时间:2023-09-26

我正在使用NodeJS,以下JSON.parse失败了,但我无法找出原因:

> s[0]
'[["hands[0].session.buyin", "332"]]'
> JSON.parse(s[0]);
SyntaxError: Unexpected token 
    at Object.parse (native)
    at repl:1:6
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at 

有问题的字符串已从文件加载。 如果我将字符串复制到控制台中,它可以工作,所以我怀疑这可能与文件的编码方式有关,但我只是无法弄清楚是什么。 JSON.parse的错误消息显然没有帮助。

似乎String包含一个字节顺序标记。

> s[0].charCodeAt(0).toString(16)
'feff'

您必须先将其剥离,然后JSON.parse()才能管理其余部分。

> JSON.parse(s[0].trim())
[ [ 'hands[0].session.buyin', '332' ] ]

在 Node v0.10.12 的 REPL 上,这工作正常:

> var b = '[["hands[0].session.buyin", "332"]]';
undefined
> JSON.parse(b)
[ [ 'hands[0].session.buyin', '332' ] ]
> 

该字符串是二维数组的有效 JSON 表示形式。

您的环境是什么?