Angularjs:无法使用单引号解析JSON

时间:2015-07-28 07:13:01

标签: javascript json angularjs

在我的angularjs应用程序中,我从API中获取此JSON:

[
  {
    'Foo': 'bar'
   }
]

不幸的是 - SyntaxError:意外的令牌'在Object.parse(native)

有没有办法在不更改API的情况下修复此客户端?

1 个答案:

答案 0 :(得分:4)

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

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

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

你会告诉别人你可以用eval来解析它,这是真的,你可以:

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

...但请注意 eval将在响应中运行任意代码,它不仅解析数据结构。因此,您必须绝对信任API ,不要发回恶意内容,跟踪用户的内容等。