我有一个从服务器返回的字符串。它的格式是
[{"text":"content"}]
其中content
是动态字符串,将根据用户操作而有所不同。在一个这样的特殊情况下,返回的字符串不能被评估,但是当我使用JSON.parse
时,它可以正常工作而没有问题。我的评估如下所示
eval("(" + response + ")").
由于某些限制,我无法在此处粘贴有问题的字符串。但是,是否存在eval
不起作用且JSON.parse
无效的特定情况?
EDIT1: 我缩小了问题的范围,提出问题的特定字符串是,
[{"con" :"g
<\/font><\/td"}]
此字符串无法进行评估,但可以通过解析。 我想问题是因为刺痛“/”。但我无法理解为什么。在这方面的任何帮助都会很棒。
EDIT2: g和&之间存在不可见的特征。这就是造成这个问题的原因。有谁知道它是什么角色? 我将把eval更改为JSON.parse。但我想知道它失败的原因。
答案 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对象文字表示法中无效