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

如何解决RestSharp响应解析错误并提取JSON中的campaignId

解决RestSharp响应中提取campaignId的问题

先帮你理清楚报错的核心原因:你调用client.Execute(GetIdreq)得到的GetIdres是RestResponse类型的对象,不是直接的JSON字符串,直接传给JObject.Parse肯定会报错——它需要的是纯JSON文本,不是整个响应对象。

接下来是修正后的实现方案,一步步帮你搞定:

关键修正点

  • 从RestResponse的Content属性获取实际的JSON响应字符串
  • 注意GetResponse的这个API返回的是campaign数组(哪怕只匹配到一个结果,格式也是数组),所以要用JArray.Parse而非JObject.Parse
  • 先判断响应是否成功,避免空内容或请求失败导致的解析错误

完整修正代码

static void addEmailToList(string ListName, string Email, string Name)
{
    var client = new RestClient($"https://api.getresponse.com/v3/campaigns?query[name]={ListName}");
    var GetIdreq = new RestRequest(Method.GET);
    GetIdreq.AddHeader("X-Auth-Token", "api-key 948df-my-key-7f3c6");
    
    // 这里要注意:GET请求不需要添加RequestBody参数,我给你注释掉了,避免请求格式错误
    // GetIdreq.AddParameter("application/json", ParameterType.RequestBody);

    var GetIdres = client.Execute(GetIdreq);

    // 先校验响应状态,再处理解析逻辑
    if (GetIdres.IsSuccessful && !string.IsNullOrEmpty(GetIdres.Content))
    {
        // 解析返回的JSON数组
        var campaigns = JArray.Parse(GetIdres.Content);
        
        // 提取第一个匹配的campaignId(如果需要处理多个结果,可以遍历数组)
        if (campaigns.Count > 0)
        {
            string campaignId = campaigns[0]["campaignId"].ToString();
            Console.WriteLine($"提取到的campaignId:{campaignId}");
            
            // 这里可以继续编写后续添加邮箱到列表的业务逻辑
        }
        else
        {
            Console.WriteLine("未找到匹配的campaign");
        }
    }
    else
    {
        Console.WriteLine($"请求失败:{GetIdres.ErrorMessage},状态码:{GetIdres.StatusCode}");
    }
}

额外提示

如果你的业务场景中可能返回多个匹配的campaign,想要提取所有唯一的campaignId,可以遍历数组并去重,比如:

var uniqueCampaignIds = campaigns
    .Select(c => c["campaignId"].ToString())
    .Distinct()
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:59:06