我想通过javascript中的正则表达式删除JSON字符串中的双引号
我有一个类似这样的JSON我想通过javascript中的正则表达式删除JSON字符串中的双引号,javascript,json,Javascript,Json,我有一个类似这样的JSON { "DocumentID": 28663, "DocumentName": " Have a "HAPPY" and safe journey ", } 我犯了一个错误 位置315784处JSON中的意外标记H 因此,我必须删除围绕HAPPY的双引号 如何做到这一点?“祝您旅途愉快、安全”不是正确的字符串,您应该这样写: “祝您旅途愉快、安全”或“祝您旅途愉快、安全”因为您正在使用C#进行编码。从MSDN网站: 应使用Json.NET进行序
{
"DocumentID": 28663,
"DocumentName": " Have a "HAPPY" and safe journey ",
}
我犯了一个错误
位置315784处JSON中的意外标记H
因此,我必须删除围绕HAPPY
的双引号
如何做到这一点?“祝您旅途愉快、安全”
不是正确的字符串,您应该这样写:
“祝您旅途愉快、安全”
或“祝您旅途愉快、安全”
因为您正在使用C#进行编码。从MSDN网站:
应使用Json.NET进行序列化和反序列化。提供
支持AJAX的序列化和反序列化功能
应用程序
使用该库应该保证您获得的是有效的JSON字符串,而不是无效的JavaScript序列化。显然,您可以在不使用reg ex的情况下解决此问题。很可能您解析JSON的方式不对。 但无论如何,这里的代码将用json字符串中的single替换双引号
function passJSON_ItWillReplaceDoubleQuoteWithSingle(str){
var firstDoubleQuoteFound = false;
var escapeNextDouble = false;
var newStr = "";
for (var i = 0; i<str.length; i++){
var s = str.charAt(i);
if(s == '"' && !firstDoubleQuoteFound){
firstDoubleQuoteFound = true;
newStr += '"';
} else if(s == '"' && firstDoubleQuoteFound && !escapeNextDouble){
if( isNextNonSpaceAcceptable(str, i+1) ){
newStr += s;
firstDoubleQuoteFound = false;
} else {
escapeNextDouble = true;
newStr += '\'';
}
} else if(s == '"' && firstDoubleQuoteFound && escapeNextDouble){
newStr += '\'';
escapeNextDouble = false;
} else{
newStr += s;
}
}
return newStr;
}
function doubleQuoteReplaced(str){
return str.replace(/"/g, "'");
}
function isNextNonSpaceAcceptable(str, i){
for(var j=i ; j<str.length ; j++){
var s = str.charAt(j);
if( s==' ' || s=='\t')
continue;
if( s == '}' || s==',' || s == ':')
return true;
else
return false;
}
}
当双引号后面有逗号或“}”或“:”时,它将失败,这是一个无效的JSON对象。在生成内容之前,您需要检查该内容的来源以修复它。你能解释一下这个JSON是如何生成的吗?我在序列化后得到了这个JSON,你在哪里生成的?如果我删除了Happy周围的双引号,那么它将是一个有效的JSON。我在JSON Formatter中检查了它,您需要修复这个服务器端。如果通过适当的JSON编码器传递对象,则不需要正则表达式。有关更多详细信息,请参见下面的答案,以及Jonathan Schmold的评论。但我在解析后得到了这种JSON。@Revati这听起来不可能,如果问题是在服务器响应上使用Regualr表达式,我想可能是对的?通过检查双引号前后是否有任何字符。如果正则表达式满足这个条件,我们可以使用replace删除这些双引号function@Revathi如何从非字符串的变量中替换它?如果使用ASP.Net,他甚至可以使用返回Json(对象)
var str = "{\"some_key\" : \"some \"Happy\" people\", \"next_key\":\"Z\"}";
console.log(passJSON_ItWillReplaceDoubleQuoteWithSingle(str));