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

如何在C# .NET中从API JSON响应提取并存储access_token

获取并存储Bearer Token的access_token值

要从API返回的JSON响应中提取access_token并存储到变量,核心是解析JSON响应,下面结合你现有的RestSharp代码,提供几种实用的实现方式:

1. 使用RestSharp自带的强类型反序列化(推荐)

RestSharp支持直接将POST请求的响应反序列化为自定义类,步骤简洁且类型安全:

第一步:定义映射JSON结构的类

创建一个和API返回字段一一对应的类:

public class TokenResponse
{
    public string access_token { get; set; }
    public string token_type { get; set; }
    public int expires_in { get; set; }
}

第二步:修改代码并提取token

var client = new RestClient("https://api");

var request = new RestRequest();
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("client_id", "X");
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_secret", "X");

// 直接将响应反序列化为TokenResponse对象
var tokenResponse = client.Post<TokenResponse>(request);

// 提取access_token到变量
string bearerToken = tokenResponse.access_token;

// 验证结果
Console.WriteLine(bearerToken); // 输出:aisodjaisjd4123

2. 使用.NET内置的System.Text.Json解析

如果不想依赖RestSharp的序列化能力,可使用.NET自带的System.Text.Json库:

var client = new RestClient("https://api");

var request = new RestRequest();
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("client_id", "X");
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_secret", "X");

var response = client.Post(request);

// 反序列化响应内容
var tokenResponse = System.Text.Json.JsonSerializer.Deserialize<TokenResponse>(response.Content);

// 存储access_token
string bearerToken = tokenResponse.access_token;

Console.WriteLine(bearerToken);

3. 使用Newtonsoft.Json(Json.NET)解析

如果项目已引入Newtonsoft.Json,可按以下方式实现:

注意:需先通过NuGet安装Newtonsoft.Json包

var client = new RestClient("https://api");

var request = new RestRequest();
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("client_id", "X");
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_secret", "X");

var response = client.Post(request);

// 反序列化响应内容
var tokenResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<TokenResponse>(response.Content);

// 存储access_token
string bearerToken = tokenResponse.access_token;

Console.WriteLine(bearerToken);

注意事项

  • 建议添加response.Content的空值检查,避免反序列化时出现异常
  • 强类型解析比动态解析更安全,优先使用自定义类映射的方式
  • 若API返回字段名存在大小写差异,可通过特性(如[JsonPropertyName])调整映射规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:30:57