【问题标题】:JavaScript - Parsing JSON with carriage and new line spacesJavaScript - 使用回车符和换行符解析 JSON
【发布时间】:2012-06-17 04:21:32
【问题描述】:

我正在使用以下 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

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

【问题讨论】:

  • 你可能想多了。你是如何获取这个文件的?你如何得到它的内容?
  • 我没有看到这个问题:jsfiddle.net/UrQ7Y
  • 我同意上面的观点,最好尝试摆脱回车和空格,而不是围绕它的代码。在 php 中,您可以使用类似 json_encode 的方法为您执行此操作。

标签: javascript jquery json parsing


【解决方案1】:
data = JSON.parse( (jsonMatch ? jsonMatch[1] : data).replace(/\n/g,"") );

【讨论】:

  • 我会接受这个答案,但是以下实际上是我没有在 C# 代码中关闭 StreamReader 对象的问题。
【解决方案2】:

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

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

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

【讨论】:

  • 空格在 JSON 字符串中完全有效。
  • 好的,抱歉我理解错了问题。虽然它或多或少是java字符串替换。
猜你喜欢
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
相关资源
最近更新 更多