skip to Main Content

I want to add double quotation in list of each string item so that I can make a JSON request to send to api.
var response = default(HttpResponseMessage);
using var httpClient = CreateHttpClientForRequest();

        var kpis = string.Join<string>(",", (IEnumerable<string>)keyProcessInstance);
       
        using var requestMessage = new HttpRequestMessage(HttpMethod.Delete, PathfinderDeleteActiveUri)
        {             
            Content = new StringContent ($@"[""{kpis}""]", Encoding.UTF8, "application/json")            
        };

I need this type of format in kpis variable.
["string1","string2","string"]

but not able to add "" for each string in the kpis.

2

Answers


  1. You should use System.Text.Json.JsonSerializer to serialize your list to JSON.

    using System.Text.Json;
    
    ...
    
    string kpis = JsonSerializer.Serialize(keyProcessInstance);
           
    using var requestMessage = new HttpRequestMessage(HttpMethod.Delete, PathfinderDeleteActiveUri)
    {             
        Content = new StringContent(kpis, Encoding.UTF8, "application/json")            
    };
    

    For educational purposes only, this is what you could do to make it work with your own approach.

    var kpis = string.Join<string>("","", (IEnumerable<string>)keyProcessInstance);
           
    using var requestMessage = new HttpRequestMessage(HttpMethod.Delete, PathfinderDeleteActiveUri)
    {             
        Content = new StringContent($"["{kpis}"]", Encoding.UTF8, "application/json")            
    };
    

    You have to use backslash to use quotes in a string ".

    Login or Signup to reply.
  2. You don’t need to quote array values, the JSON serializer will do it automatically. In .NET 5 and later you can use JsonContent.Create to create a JsonContent object that serializes its payload automatically:

    var jsonContent=JsonContent.Create(keyProcessInstance);
    using var requestMessage = new HttpRequestMessage(HttpMethod.Delete, uri)
            {             
                Content = jsonContent           
            };
    await client.SendAsync(requestMessage);
    

    The default media type for JsonContent is application/json with CharSet utf-8

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search