eval不起作用,但JSON.parse可以

时间:2012-08-27 16:24:34

标签: javascript eval

我有一个从服务器返回的字符串。它的格式是

[{"text":"content"}]

其中content是动态字符串,将根据用户操作而有所不同。在一个这样的特殊情况下,返回的字符串不能被评估,但是当我使用JSON.parse时,它可以正常工作而没有问题。我的评估如下所示

eval("(" + response + ")").

由于某些限制,我无法在此处粘贴有问题的字符串。但是,是否存在eval不起作用且JSON.parse无效的特定情况?

EDIT1: 我缩小了问题的范围,提出问题的特定字符串是,

[{"con" :"g
<\/font><\/td"}]

此字符串无法进行评估,但可以通过解析。 我想问题是因为刺痛“/”。但我无法理解为什么。在这方面的任何帮助都会很棒。

EDIT2: g和&之间存在不可见的特征。这就是造成这个问题的原因。有谁知道它是什么角色? 我将把eval更改为JSON.parse。但我想知道它失败的原因。

3 个答案:

答案 0 :(得分:2)

那个有缺陷的角色是U + 8232,Unicode LINE SEPARATOR。它会在各种浏览器中导致“未终止的字符串文字”语法错误,这就是为什么它不能用于eval()字符串。 JSON.parse可以解决这个问题,就像JSON is not really a JS subset那样。

答案 1 :(得分:1)

使用json2 library解析您的JSON。

答案 2 :(得分:-1)

您在解析JSON和解析JavaScript时感到困惑。 eval()不解析JSON。 Eval需要有效的JS语法。 在"test":"test"中,属性周围的引号在javascript对象文字表示法中无效