JSON在浏览器中解析,但不是由node.js解析

时间:2016-04-14 12:08:34

标签: json node.js mocha

我即将为我的客户端用户界面编写一些测试。

奇怪的是,我的JSON字符串:

{ 
  match: "\s?5\.7\s?\<=\>\s?7",
  success:"null-coalesce-operator"
}

以前由浏览器(Chrome)通过JSON.parse解析,如下所示:

{"match":"\s?5\.7\s?\<=\>\s?7","success":"null-coalesce-operator"}
           ^

SyntaxError: Unexpected token s
    at Object.parse (native)
    ...

一切都很好,

但是当我在node.js env中通过mocha运行那部分时,我得到:

<!doctype html><html><body><div data-meta="{&quot;match&quot;:&quot;\\s?5\\.7\\s?\\<=\\>\\s?7&quot;,&quot;success&quot;:&quot;null-coalesce-operator&quot;}"></div></body></html>

有没有人经历过这样的事情。 thx for tipp。

节点版本为 v5.7.1

mocha版本 2.4.5

UPDATE 我测试的html字符串是:

session

它只是一个没有任何 \ n 换行符的单行字符串。

1 个答案:

答案 0 :(得分:1)

我认为这是因为它还解析特殊字符(例如\ n =&gt;换行符,\ r =&gt;回车符等),什么chrome没有。因此,因为您希望在正则表达式中使用反斜杠,所以在解析节点之前,您需要将每个\替换为\\

json_string = json_string.replace(new RegExp('\\\\', 'g'), '\\\\') //we have to use regex, because when using replace with string, it only replaces the first occurence...

否则,在解析时,它会告诉,à\ s:'它是一个由s标识的特殊字符。但我没有任何令牌。所以我抛出一个错误。“