2015-07-28 108 views
0

在我angularjs应用我收到来自API这个JSON - :在Object.parse(原生)意外令牌'Angularjs:无法解析JSON用单引号

[ 
    { 
    'Foo': 'bar' 
    } 
] 

不幸的SyntaxError

有没有什么办法可以在不改变API的情况下修复这个客户端?

回答

4

这不是JSON。这是类似JSON的,但JSON requires字符串和属性键是双引号,而不是单引号。

所以答案是:纠正API。如果你不控制它,告诉控制它的人是错的。

如果你绝对需要支持那个破坏的响应,你可以看看修改Crockford的一个JSON parsers,使它支持单引号的键和字符串,这应该不是很难。或者你可以使用PEG.js来生成你自己的解析器(可能从他们的JavaScript解析器开始),但这会更有效。

你会得到别人告诉你,你可以分析与eval,这是真的,你可以:

// LAST RESORT 
var data = eval("(" + response + ")"); 

...但是请注意,eval将在响应运行的任意代码,它不仅仅解析数据结构。所以你必须完全信任API不发回恶意的东西,跟踪你的用户的东西等。