如何从c#中读取HTTP响应体的特定部分?



我只需要下面的响应体中的"points": 300。

正文:

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

代码:

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);
}
}

我只需要点的值。- 300

您需要将字符串响应反序列化为JSON,并借助属性名提取points值。

使用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"]);
}

你也可以尝试。net 6+版本中引入的原生。net方法,即JsonNode.Parse()

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

最新更新