Home > OS >  How to read only a specific part from HTTP Response body in c#?
How to read only a specific part from HTTP Response body in c#?

Time:01-02

I need only the "points": 300 from the below response body.

Here is the body:

{
  "channel": "abcd",
  "username": "fgh",
  "points": 300,
  "pointsAlltime": 0,
  "watchtime": 0,
  "rank": 1
}

The Code:

public async int get_points(string user){
 var client = new HttpClient();
 var request = new HttpRequestMessage
 {
    Method = HttpMethod.Get,
    RequestUri = new 
    Uri("https://api.streamelements.com/kappa/v2/points/abcd/fgh"),
    Headers =
    {
        { "Accept", "application/json" },
        { "Authorization", "Bearer 123" },
    },
  };
 using (var response = await client.SendAsync(request))
 {
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
 }
}

I need only the points value. - 300

CodePudding user response:

You need to deserialize your string response into JSON and with the help of the property name you need to extract the points value.

Using JObject.Parse(String),

using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var result = await response.Content.ReadAsStringAsync();

    JObject jObj = JObject.Parse(result);
    Console.WriteLine(jObj["points"]);
}

You can also try the native .NET approach introduced in .NET 6 versions i.e. JsonNode.Parse(),

var jNode = JsonNode.Parse(result);
Console.WriteLine(jNode["points"]);
  • Related