1

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

[{"text":"content"}]

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

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

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

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

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

这个字符串不能被评估,但可以被解析。我猜这个问题是因为刺痛“/”。但我无法理解为什么。在这方面的任何帮助都会很棒。

EDIT2: g 和 < 之间存在一个不可见的字符,这导致了问题。有谁知道是什么角色?我会将 eval 更改为 JSON.parse。但我想知道它失败的原因。

4

3 回答 3

2

That buggy character is U+8232, the Unicode LINE SEPARATOR. It leads to "unterminated string literal" syntax errors in various browsers, this is why it does not work to eval() the string. JSON.parse can work around that, as JSON is not really a JS subset in that perspective.

于 2012-08-27T19:21:12.880 回答
1

使用json2 库来解析您的 JSON。

于 2012-08-27T16:38:13.470 回答
-1

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

于 2012-08-27T16:45:21.870 回答