4

我正在使用以下 JS 代码从单独的 JS 文件中解析 JSON 字符串:

// extract JSON from a module's JS
var jsonMatch = data.match( /\/\*JSON\[\*\/([\s\S]*?)\/\*\]JSON\*\// );
data = JSON.parse( jsonMatch ? jsonMatch[1] : data );

这是我从中提取 JSON 字符串的 JS 文件示例:

JsonString = /*JSON[*/{"entities":[{"type":"EntityPlayer","x":88,"y":138}]}/*]JSON*/;

这段代码工作得很好,但是如果带有 JSON 字符串的 JS 文件包含回车并且不在一个完整的行上,那么我会收到语法错误。

例子:

JsonString = /*JSON[*/{
     "entities":[{
         "type":"EntityPlayer",
         "x":88,
         "y":138}]
     }/*]JSON*/;

返回以下错误:

JSON.parse: unexpected non-whitespace character after JSON data

知道如何通过删除空格或删除回车符和换行符来修改我的解析工作吗?

4

2 回答 2

6
data = JSON.parse( (jsonMatch ? jsonMatch[1] : data).replace(/\n/g,"") );
于 2012-06-14T06:54:54.557 回答
-1

没有测试它,但也许这就是你要找的?

var JsonString = JsonString.replace(new RegExp( "\\n", "g" ),"");

(来自http://www.bennadel.com/blog/161-Ask-Ben-Javascript-Replace-And-Multiple-Lines-Line-Breaks.htm

于 2012-06-14T06:45:18.430 回答