1

我正在使用 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 的错误消息显然没有帮助。

4

2 回答 2

11

似乎String包括一个Byte-Order Mark

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

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

> JSON.parse(s[0].trim())
[ [ 'hands[0].session.buyin', '332' ] ]
于 2013-09-24T17:47:05.160 回答
1

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

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

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

你的环境是什么?

于 2013-09-24T17:44:39.140 回答