【发布时间】:2013-06-20 18:33:29
【问题描述】:
我有一个问题,有人没有正确地转义值中的双引号,以便稍后将其解释为 JSON 字符串。
字符串示例:
{"description":"This is my 12" pizza I ordered.","value":"1"}
当我尝试让 JSON.parse() 处理它时,由于未转义的双引号(指以英寸为单位的大小)而导致错误
起初,我想 - 就这样吧:
string.replace(/\"/g,'\"');
但当然,这也会转义所有有效的双引号。所以,我不是正则表达式方面的专家,但我环顾四周寻找一些答案,我认为这需要消极的前瞻性?
有人可以帮助构建一个正则表达式来查找(替换)任何双引号序列,其中有问题的双引号后面的下一个 2 字符序列不是空格逗号吗?
我知道这不是一个完全通用的解决方案,(让这个人自己解决),但不幸的是我没有通用解决方案的奢侈。
TIA
更新 - 而不是考虑示例字符串(仅用于说明)。是否可以在每个双引号之前和之后测试是否存在有效的 JSON - 即查找以下任何字符 ,{[:
在每个双引号之前和之后?我想这就是我要问的 - 这可以通过前瞻/后置正则表达式来完成吗?
【问题讨论】:
-
最好在创建时完成;你是如何创建你的 JSON 的?
-
当你使用 JSON.stringify 把你的“东西”变成一个 json 对象时,它应该为你做自动转义。你不应该自己做这个;你能展示一下你是如何构建你要转换为 JSON 的对象的吗?
-
您要求的正则表达式无法解决您的问题,因为不应转义单词“description”、“this”和“value”前面的双引号,但是后不紧跟逗号或空格字符。
-
您将如何处理这种情况?
{"description":"I'd like a 10", or maybe a 12", and make it "thin crust""}很难做到这一点。纠正 JSON 不仅仅是“通用”修复,它是 only 修复。为什么他们要手动生成它而不是使用适当的 JSON 字符串化器?服务器代码是什么语言的?每种流行的服务器语言都有可用的 JSON 生成器。 -
回答格式错误的 JSON 字符串的来源问题 - 我没有创建字符串,所以我无法修复它。我知道让 JSON 正确是唯一真正的解决方法,但如果这不可能,我正在寻找尽可能强大的替代方案。相信我 - 我不满意将糟糕的 JSON 作为唯一的解决方案!
标签: javascript regex json