我正在使用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的错误消息明显无益。
答案 0 :(得分:11)
似乎String
包含Byte-Order Mark。
> s[0].charCodeAt(0).toString(16)
'feff'
在JSON.parse()
完成其余工作之前,您必须先strip that。
> JSON.parse(s[0].trim())
[ [ 'hands[0].session.buyin', '332' ] ]
答案 1 :(得分:1)
在Node v0.10.12的REPL上,这很好用:
> var b = '[["hands[0].session.buyin", "332"]]';
undefined
> JSON.parse(b)
[ [ 'hands[0].session.buyin', '332' ] ]
>
该字符串是2D数组的有效JSON表示。
你的环境是什么?