JavaScript - 带有回车和换行空格的解析JSON

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

你有什么想法可以修改我的解析程序,使之能够通过去除空格或删除回车和换行符来工作吗?


你可能想太多了。你是如何获取这个文件的?你如何获取它的内容? - Joseph
我没有看到那个问题:http://jsfiddle.net/UrQ7Y/ - Ray Toal
我同意上面的观点,最好尝试消除回车和空格,而不是在代码周围编写。在 PHP 中,您可以使用类似 json_encode 的函数来为您完成此操作。 - matpol
2个回答

6
data = JSON.parse( (jsonMatch ? jsonMatch[1] : data).replace(/\n/g,"") );

1
我会接受这个答案,但实际上以下问题在于我没有关闭C#代码中的'StreamReader'对象。 - fulvio

-1

2
在 JSON 字符串中,空格是完全有效的。 - ThiefMaster
好的,抱歉我误解了问题。虽然这更多或少是Java字符串替换。 - DerApe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接