replace()不适用于转义字符

时间:2016-08-25 09:47:53

标签: c# json string-formatting

我需要格式化这个json字符串

"\"{\\r\\n  \"result\": null,\\r\\n  \"errorcode\": \"101\",\\r\\n  \"errormessage\": \"OLD VERSION !!! \",\\r\\n  \"failed\": \"Y\"\\r\\n}\""

这种格式

"{  "result": null,  "errorcode": "101",  "errormessage": "OLD VERSION !!!  ",  "failed": "Y"}"
  

但我得到的是

"\"{  \"result\": null,  \"errorcode\": \"101\",  \"errormessage\": \"OLD VERSION !!! \",  \"failed\": \"Y\"}\""

我格式化Json字符串的函数是

public string FormatJson(string oObject)
{
    string js = JValue.Parse(oObject).ToString(Newtonsoft.Json.Formatting.Indented);
    string x = js.Replace("\r\n", "");
    string y = x.Replace(@"\", "");

    return y;
}

我将上述功能称为

 ErrorResponse errres = new ErrorResponse()
            {
                errormessage = statusR_msg,
                errorcode = statusR,
                resend = "Y"
            };
json = JsonConvert.SerializeObject(errres);
json = func.FormatJson(json);
  

我有一个名为ErrorResponse.cs的类,带有这些属性

public class ErrorResponse
{
    public string  result { get; set; }
    public string errorcode { get; set; }
    public string errormessage { get; set; }
    public string failed{ get; set; }
}

我试过了 string y = x.Replace("\\", "");也是如此,但没有奏效。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这看起来像一个查看错误。您在字符串的开头和结尾都有引号且\n显示为\\n这一事实表明您所拥有的不是字符串的实际值但是字符串的值被转义为在代码中工作。

我怀疑你从观察窗口获得了这个值 - 在这里它会将它显示为转义字符串,而不是原始值。因此,请确保在查看字符串时,您实际上正在查看字符串(例如,通过单击Text Visualiser /放大镜图标)。显然,如果\不在实际的字符串中,那么你的替换将不会消除它们。