JSON.parse无故失败

时间:2013-09-24 17:35:58

标签: javascript json node.js

我正在使用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的错误消息明显无益。

2 个答案:

答案 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表示。

你的环境是什么?