You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中仅读取HTTP响应体中的特定points字段

提取JSON响应中的points字段值

你可以通过两种常用方式提取points字段的值,以下是修改后的代码:

方法一:使用System.Text.Json(.NET内置,无需额外安装包)

步骤1:定义对应JSON结构的实体类

public class UserPointsResponse
{
    public int Points { get; set; }
    // 不需要其他字段的话,仅保留Points即可
}

步骤2:修改get_points方法

// 注意:异步方法需返回Task<int>而非int,否则编译报错
public async Task<int> get_points(string user)
{
    // 最佳实践:HttpClient应全局复用,不建议每次调用都新建实例
    using var client = new HttpClient();
    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Get,
        RequestUri = new Uri($"https://api.streamelements.com/kappa/v2/points/abcd/{user}"),
        Headers =
        {
            { "Accept", "application/json" },
            { "Authorization", "Bearer 123" },
        },
    };
    
    using var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    
    // 反序列化为实体类,直接获取Points属性
    var userPoints = await response.Content.ReadFromJsonAsync<UserPointsResponse>();
    return userPoints?.Points ?? 0; // 为空时返回默认值0
}

方法二:使用Newtonsoft.Json(需安装NuGet包Newtonsoft.Json)

如果不想定义实体类,可直接动态读取字段:

public async Task<int> get_points(string user)
{
    using var client = new HttpClient();
    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Get,
        RequestUri = new Uri($"https://api.streamelements.com/kappa/v2/points/abcd/{user}"),
        Headers =
        {
            { "Accept", "application/json" },
            { "Authorization", "Bearer 123" },
        },
    };
    
    using var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    
    var body = await response.Content.ReadAsStringAsync();
    dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(body);
    return jsonObj.points ?? 0;
}

额外注意事项

  • 异步方法必须返回Task<int>,原代码的async int写法不符合C#异步规范。
  • 频繁创建HttpClient会导致Socket资源耗尽,建议全局单例复用该实例。
  • 可按需添加异常捕获逻辑,比如处理请求失败的HttpRequestException。

内容的提问来源于stack exchange,提问作者user19333311

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:25:14