带单引号的javascript json解析

带单引号的javascript json解析,javascript,json,Javascript,Json,我正在尝试将该对象转换为json对象,该对象与以下对象和相关代码配合良好: myStr = "{'key':'value'}" JSON.parse(myStr.replace(/'/g, "\"")); 问题是,对于相同的代码,我得到了以下对象的异常: myStr = "{'key':'val'ue'}" 错误是意外的令牌u。我想保留l和u之间的单引号,而不是替换它 还有吗?你可以这样做,但感觉有点不舒服 JSON.parse(myStr.replace(/{'/g, "{\"").rep

我正在尝试将该对象转换为json对象,该对象与以下对象和相关代码配合良好:

myStr = "{'key':'value'}"
JSON.parse(myStr.replace(/'/g, "\""));
问题是,对于相同的代码,我得到了以下对象的异常:

myStr = "{'key':'val'ue'}"
错误是意外的令牌u。我想保留l和u之间的单引号,而不是替换它


还有吗?

你可以这样做,但感觉有点不舒服

JSON.parse(myStr.replace(/{'/g, "{\"").replace(/'}/g, "\"}").replace(/':'/g, "\":\""));

希望这能对你有所帮助。假设内部单引号位于字母之间

myStr = "{'key':'val'ue'}"
JSON.parse(myStr.replace(/([a-z])'([a-z])/g, "$1\\'$2"));

你需要逃离那个。或者编码。任何系统正在生成的
“{'key':'val'ue'}”
都应该被拍打。这是无效的。我同意@xdumain。如果您能够更改原始系统,在源代码处修复问题,而不是尝试修补messIf。如果您生成正确的JSON,则您没有任何这些问题。如果您手动生成它,则有效地生成它:
mystr='{“key”:“val'ue”}'
it。。。作品虽然这是一个解决不同问题的方法,但我同意,在源代码处解决问题比使用同样糟糕的解决方案来解决问题要好得多。这个解决方案似乎有效,但如果你能解释一点,尤其是最后一次替换,那就太好了。我知道第一次替换的2个是极端引号。最后一次替换遵循相同的思想,即用引号旁边的字符替换单引号。在本例中,它是键和值之间的冒号。您希望冒号被双引号包围,而不是单引号,所以它就是这样做的。反斜杠只是转义字符,以防你不知道。