【问题标题】:trying to replace "\" char using javascript for a json parser尝试使用 javascript 为 json 解析器替换“\”字符
【发布时间】:2011-04-21 09:16:32
【问题描述】:

我有以下 javascript 行:

YAHOO.lang.JSON.parse(txt)

其中 text 是从数据库中提取的字符串。这是我返回的问题字符串之一的示例:

5000\25\30%

据我所知,JSON 解析器在 / 字符上抛出语法错误。我查看了这里的线程,他们中的大多数人都说要将其更改为“//”,但我正在从数据库中提取数百个值,因此我无法更改它们的来源。我试图让它用空字符串替换'/'字符,因为我实际上不必显示'/',但我遇到了困难。我当前的替换代码如下所示:

if(substr.indexOf("\\") > 0){

  substr.replace(/\\/g , "");

 }

但是什么都没有发生。有时“indexOf”检查会失败,所以我尝试在每个字符串上运行替换,但它仍然没有替换任何“\”字符。所以这是我的问题:如果我返回一个包含一个或多个“\”字符的字符串,并且需要使用 javascript 为 JSON 解析器删除它们,我该怎么做;或者如何让 JSON 解析器在不更改源字符串的情况下接受 '\' 字符。

编辑:我认为问题可能在于 "\2" 和所有其他的都在评估和排除不做任何事情的字符。这些字符总是被转义,所以它们不能被替换。这甚至可以修复错误吗?

【问题讨论】:

  • 这听起来像是在为原本不应该存在的问题寻找解决方案。 txt 包含什么?谁在什么时候用什么消息抛出错误?
  • txt 包含一个从数据库中检索到的字符串,它是一组键:值对,格式为 "NAME":"value",其中值是字符串。它适用于所有字符串,除了碰巧有'\'字符的字符串。为了弄清楚出了什么问题,我手动提取了每个字符串并将其推送到 JSON 解析器,当我这样做时,唯一失败的字符串是其中带有“\”的字符串。
  • 我认为您需要显示一些代码。如何从数据库中检索数据?
  • 据我所知,这不是检索,当我检索一组不同的键:值对时,相同的代码工作得很好;但这就是我的做法: var xhr = AjaxMsg.prototype.getXMLHTTPRequest(); xhr.open("GET", url, false); xhr.send(null); var txt = xhr.responseText;
  • 我会担心数据库中包含带有原始反斜杠的“JSON”字符串。序列\" 会发生什么情况?

标签: javascript string json replace backslash


【解决方案1】:

我能够弄清楚这一点。它所做的是更改从数据库创建初始返回的 jsonWrite 并执行 replaceAll("\x5C", "\"),用 html 代码替换字符,以便它仍然显示并能够被解析.

【讨论】:

    猜你喜欢
    • 2014-11-08
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2018-01-20
    • 1970-01-01
    • 2012-11-15
    • 2015-07-22
    相关资源
    最近更新 更多