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

如何从C#的JsonResult中反序列化提取Token?

解决方法

你不需要序列化JsonResult,真正的API返回数据存在RestResponse的Content属性里,直接从这里提取JSON字符串再反序列化就能拿到Token。

步骤1:定义反序列化模型(可选,也可以用动态解析)

先创建一个和返回JSON结构匹配的类,方便强类型解析:

public class TokenResponse
{
    public string Token { get; set; }
}

方案一:修改API调用方法,直接返回Token

如果这个方法的核心目的是获取Token,可以直接在方法内解析后返回:

public async Task<IActionResult> NetExplorerAPI(string AdresseAPI, object Requete, RestSharp.Method Methode)
{
    var client = new RestClient(AdresseAPI);

    var request = new RestRequest();
    request.Method = Methode; // 修复原代码硬编码Post的问题,使用传入的请求方法
    request.AddJsonBody(Requete);
    request.AddHeader("Accept", "application/json");
            
    RestResponse response = await client.ExecuteAsync(request);
    
    // 解析响应内容获取Token
    if (!string.IsNullOrEmpty(response.Content))
    {
        var tokenResponse = JsonConvert.DeserializeObject<TokenResponse>(response.Content);
        return new JsonResult(tokenResponse.Token); // 直接返回Token字符串
    }
    
    // 处理请求失败场景
    return BadRequest("获取Token失败");
}

方案二:保留原方法,在调用后解析Token

如果必须保留原方法的返回结构,调用后从JsonResult中取出RestResponse再解析:

// 调用API方法
var actionResult = await NetExplorerAPI("你的API地址", 请求对象, RestSharp.Method.Post);

// 从JsonResult中提取RestResponse
if (actionResult is JsonResult jsonResult && jsonResult.Value is RestResponse response)
{
    if (!string.IsNullOrEmpty(response.Content))
    {
        // 方式1:用强类型模型解析
        var tokenResponse = JsonConvert.DeserializeObject<TokenResponse>(response.Content);
        string token = tokenResponse.Token;

        // 方式2:用JObject动态解析(无需定义模型)
        // var jsonObj = JObject.Parse(response.Content);
        // string token = jsonObj["token"].ToString();
    }
}

原代码的问题说明

  1. 原代码中request.Method硬编码为Post,没有使用传入的Methode参数,这会导致传入其他请求方法时不生效
  2. 序列化JsonResult会得到大量无关内容,因为JsonResult的Value是完整的RestResponse对象,包含了响应状态码、请求头、响应头等元数据,真正的业务数据只在RestResponse.Content中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:45:15