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

C# 无法删除c中json字符串中的斜杠“\”,c#,C#,我无法在请求c中的Post API时删除斜杠。默认情况下,斜杠会添加到值中,是否有方法删除字符串中的斜杠。我正在将字符串数组发送到API。我也使用了替换,但它不起作用 此外,他们还参加了10056727272478.jpg,\1005656487272727.jpg,\10056564872727.jpg,\100565648727272727.jpg,\10056565656486363636363636363636363636363636363636363636363636363636363

我无法在请求c中的Post API时删除斜杠。默认情况下,斜杠会添加到值中,是否有方法删除字符串中的斜杠。我正在将字符串数组发送到API。我也使用了替换,但它不起作用

此外,他们还参加了10056727272478.jpg,\1005656487272727.jpg,\10056564872727.jpg,\100565648727272727.jpg,\1005656565648636363636363636363636363636363636363636363636363636363636363636363636363633.jpg.jpg金金金金金金金金,,,\9946464646464646636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363.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);
    }
Visual Studio调试:


斜杠实际上不在字符串中。您正在尝试删除一些不存在的内容。调试器只是在转义双引号。单击放大镜图标将为您提供有关调试器如何显示斜杠的一些选项。

斜杠实际上不在字符串中。您正在尝试删除一些不存在的内容。调试器正在运行仅转义双引号。单击放大镜图标将获得有关调试器如何显示它的一些选项。

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

假设您想要一个包含以下文本的字符串:Hello not Hello。您可以编写以下内容:

string s = "\"Hello\"";
s实际上是Hello,但调试器会将其显示为\Hello\因为它没有更好的方法将其作为字符串分隔符从作为字符串本身一部分的字符串中消除歧义

简而言之,字符串中的转义字符告诉编译器,下面的字符以一种不是编译器所考虑的默认解释的方式使用。 \:常规双引号,而不是字符串分隔符 \0:空字符,而不是常规的0 \n:新行字符,而不是常规的n \t:制表符,而不是常规的t \\:反斜杠而不是转义字符\ 等 查看完整的列表

所以,长话短说,别担心,你的弦真的是:[978216386630.jpg,9946239664158.jpg,9946237403166.jpg,….您可以通过简单地将字符串打印到控制台来验证这一点:console.WriteLinejson;

反斜杠\不是字符串中的可读字符,它是双引号的转义字符:\;它告诉编译器下面的反斜杠不是字符串delimiter只是字符串的一个规则字符部分

假设您想要一个包含以下文本的字符串:Hello not Hello。您可以编写以下内容:

string s = "\"Hello\"";
s实际上是Hello,但调试器会将其显示为\Hello\因为它没有更好的方法将其作为字符串分隔符从作为字符串本身一部分的字符串中消除歧义

简而言之,字符串中的转义字符告诉编译器,下面的字符以一种不是编译器所考虑的默认解释的方式使用。 \:常规双引号,而不是字符串分隔符 \0:空字符,而不是常规的0 \n:新行字符,而不是常规的n \t:制表符,而不是常规的t \\:反斜杠而不是转义字符\ 等 查看完整的列表

因此,长话短说,别担心,您的字符串实际上是:[9782163865630.jpg,9946239664158.jpg,9946237403166.jpg,…。您只需将字符串打印到控制台即可验证这一点:console.WriteLinejson;

每个引号在C中都是一个特殊的符号。 那些反斜杠\只是引号的转义序列。 它不会使你的结果出错。 尝试在Visual Studio中编写以下内容:

string myString = "This is my "string""; // Error
您可以在每个引号前使用反斜杠\来修复它:

string myString = "This is my \"string\""; // This work well
试试这个

每个引号在C中都是一个特殊的符号。 那些反斜杠\只是引号的转义序列。 它不会使你的结果出错。 尝试在Visual Studio中编写以下内容:

string myString = "This is my "string""; // Error
您可以在每个引号前使用反斜杠\来修复它:

string myString = "This is my \"string\""; // This work well

试试这个

我在使用RestClient时遇到了上述代码的问题,而不是它,我使用了HttpClient,现在从API我没有收到错误。使用RestClient将斜杠添加到请求参数中,但在HttpClient中没有添加斜杠,因为这个Unicode.UTF8,application/json在参数中传递了实际值这是API的一部分

  public async Task CallAPIAsync(List<string> objFileNameList)
    {

        var Info = new APIModel
        {
            filePaths = objFileNameList,
            bucketAsDir = "false"
        };

        string request = JsonConvert.SerializeObject(Info);

        using (var client = new HttpClient())
        {
            client.Timeout = Timeout.InfiniteTimeSpan;
            var stringContent = new StringContent(request, UnicodeEncoding.UTF8, "application/json");
            client.BaseAddress = new Uri("eg.api.stackflow.com/post");

            var response = await client.PostAsync("post", stringContent);
            var message = response.Content.ReadAsStringAsync().Result;
        }
    }

我在使用RestClient而不是它时遇到了上述代码的问题,我使用了HttpClient,现在从API中我没有得到错误。使用RestClient将斜杠添加到请求参数中,但在HttpClient中没有添加斜杠,因为这个Unicode.UTF8,application/json在API的参数中传递了实际值

  public async Task CallAPIAsync(List<string> objFileNameList)
    {

        var Info = new APIModel
        {
            filePaths = objFileNameList,
            bucketAsDir = "false"
        };

        string request = JsonConvert.SerializeObject(Info);

        using (var client = new HttpClient())
        {
            client.Timeout = Timeout.InfiniteTimeSpan;
            var stringContent = new StringContent(request, UnicodeEncoding.UTF8, "application/json");
            client.BaseAddress = new Uri("eg.api.stackflow.com/post");

            var response = await client.PostAsync("post", stringContent);
            var message = response.Content.ReadAsStringAsync().Result;
        }
    }

此帮助是否:?此帮助是否:?此问题已通过使用HttpClient解决此问题已通过usin解决
g HttpClient我已经通过在c中使用HttpClient而不是RestClient解决了问题,感谢您提供的信息。我已经通过在c中使用HttpClient而不是RestClient解决了问题,感谢您提供的信息。