无法删除c#中json字符串中的斜杠“\”

Jay*_*hra 2 c#

在 c# 中请求 Post API 时,我无法删除斜杠。默认情况下,值中会添加斜杠,有没有办法删除字符串中的斜杠。我正在将字符串数组发送到 api。我已经使用过也更换但它不起作用。

"[\"9782163865630.jpg\",\"9946239664158.jpg\",\"9946237403166.jpg\",\"10056487272478.jpg\",\"10056486322206.jpg\",\"10060074352670.jpg\" , \“9999843459102.jpg \”,\“9716071170078.jpg \”,\“9716071497758.jpg \”,\“10052987715614.jpg \”,\“10052985683998.jpg \”,\“10056390115358.jpg \”,\ ” 10056391622686.jpg\"、\"10056391360542.jpg\"、\"9837103120414.jpg\"、\"9837102923806.jpg\"、\"9837104857118.jpg\"]"

    public void PostWebAPI(List<string> FileNameList)
    {
        string json = JsonConvert.SerializeObject(FileNameList).ToString();
        json = json.Replace(@"\","");

        var client = new RestClient("eg.api.stackflow.com/post");
        client.Timeout = -1;
        var request = new RestRequest(Method.POST);
        request.AlwaysMultipartFormData = true;
        request.AddParameter("filePaths", json);
        request.AddParameter("bucketAsDir", "false");
        IRestResponse response = client.Execute(request);
    }
Run Code Online (Sandbox Code Playgroud)

Visual Studio 调试:

在此输入图像描述

在此输入图像描述

InB*_*een 6

反斜杠\在字符串中不是可读字符,它是双引号的转义字符:\"; 它告诉编译器"后面的反斜杠不是字符串分隔符,而是字符串的常规字符部分。

假设您想要一个包含以下文本的字符串:("Hello"不是Hello)。您将编写以下内容:

string s = "\"Hello\"";
Run Code Online (Sandbox Code Playgroud)

s确实是,"Hello"但调试器会将其显示为,"\"Hello\""因为它没有更好的方法来向用户消除"字符串分隔符与"字符串本身的一部分的歧义。

简而言之,字符串\内的转义字符告诉编译器以下字符的使用方式不是编译器考虑的默认解释。其他例子:

  • \":常规双引号而不是字符串分隔符"
  • \0: 空字符而不是常规字符0
  • \n:新行字符而不是常规字符n
  • \t: 制表符而不是常规字符t
  • \\: 反斜杠代替转义字符\
  • ETC。

在此处查看完整列表。

所以,长话短说,别担心,你的字符串实际上是:["9782163865630.jpg","9946239664158.jpg","9946237403166.jpg",...。您可以通过简单地将字符串打印到控制台来验证这一点:Console.WriteLine(json);