【问题标题】:JSON.parse() wont accept valid JSONJSON.parse() 不会接受有效的 JSON
【发布时间】:2015-02-21 21:17:13
【问题描述】:

我正在尝试解析以下字符串:{"text":"Hej"},在 JS 中

这是有效的 JSON。它是对象的属性。但是当我尝试解析它时,出现以下错误:

为什么会这样?

【问题讨论】:

  • 您的问题无法重现:jsfiddle.net/mr7ssLk7
  • 你能添加你的代码吗?
  • 那么你的字符串包含一个控制字符..(谁会猜到哈哈)对json-string做一个简单的测试>它有多少个字符(你期望有多少个)?然后找出字符13的字符代码..str.charCodeAt(13)
  • 寻找神秘人物:console.log(encodeURIComponent(yourString))

标签: javascript json compiler-errors


【解决方案1】:

简单..您的字符串无效(对于 JSON):它在位置 13 处包含一个控制字符。 自己看看:json_str.charCodeAt(13) 并与http://en.wikipedia.org/wiki/C0_and_C1_control_codes 比较。

编辑:好像你有一个 Line Feed = (LF) = \n 在那里。

【讨论】:

  • 控制台显示“10”
【解决方案2】:

哦,我现在明白了!

这是一个换行符,你可以在这里看到:

我将用<br />替换换行符

非常感谢大家的帮助!

【讨论】:

    【解决方案3】:

    对于也遇到此问题的任何未来成员,这是我的深入问题以及如何解决它。

    我允许用户在 textarea 中编写他们想要的任何内容,这将通过 AJAX 插入到我的statuses MySQL 表中,而不会转义任何字符,例如\n 或其他字符。这是不好的做法,可能会导致这样的问题。

    那么如何解决它..

    最好的做法是转义它 PHP。再简单不过了,只需使用内置的 PHP 函数:nl2br。这将用<br /> 替换所有换行符。这是一个例子:

    $str = "Bar bar ba r foo foo foof foo bar
    bar bar bar fooo
    more foo foofo bar foo bar";
    
    $new_string = nl2br($str);
    

    如果你参加聚会有点晚了,只是有点晚才意识到这个问题,你也可以用 JavaScript 来做!像这样:

    str = str.replace(/(?:\r\n|\r|\n)/g, '<br />');
    

    在解析 JSON 或类似的东西之前,请记住这一点。因为 JSON 会出错。

    希望对你有所帮助,开发愉快!!

    【讨论】:

      猜你喜欢
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多