问题复现

> node
> j = '{a:1,b:"2"}';
> JSON.parse(j)
SyntaxError: Unexpected token a
    at Object.parse (native)
    at repl:1:6
    at REPLServer.defaultEval (repl.js:252:27)
    at bound (domain.js:287:14)
    at REPLServer.runBound [as eval] (domain.js:300:12)
    at REPLServer.<anonymous> (repl.js:417:12)
    at emitOne (events.js:82:20)
    at REPLServer.emit (events.js:169:7)
    at REPLServer.Interface._onLine (readline.js:210:10)
    at REPLServer.Interface._line (readline.js:549:8)

问题原因

示例中的j不是标准的JSON字符串,键值都得带上引号。

问题解决

使用eval

try{
    var json = JSON.parse(j);
} catch(e) {
    var json = eval("("+ j +")");
}

参考资料

http://www.json.org/json-zh.html

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐