【发布时间】: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