Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想通过javascript中的正则表达式删除JSON字符串中的双引号_Javascript_Json - Fatal编程技术网

我想通过javascript中的正则表达式删除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进行序

我有一个类似这样的JSON

{
      "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));