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

C#调用汇率API反序列化JSON对象时出现报错该如何解决?

问题根因

  • 方法返回值List未指定泛型参数,属于基础语法错误
  • openexchangerates 接口返回的是单个JSON对象,不是对象数组,不能直接反序列化为List<ExchangeRate>类型
  • ExchangeRate类的属性类型定义不匹配实际JSON结构:
    • Timestamp字段是Unix时间戳格式的数值,不是字符串
    • Rates字段是货币代码为键、汇率数值为值的键值对结构,不是字符串

修复方案

第一步:修正ExchangeRate类定义

public class ExchangeRate
{
    public string Disclaimer { get; set; }
    public string License { get; set; }
    // 时间戳用long类型存储,后续可按需转换为DateTime格式
    public long Timestamp { get; set; }
    public string Base { get; set; }
    // Rates用字典类型匹配键值对结构
    public Dictionary<string, decimal> Rates { get; set; }
}

第二步:修正API调用方法

// 返回值改为单个ExchangeRate对象,无需嵌套List
public static async Task<ExchangeRate> GetLatest(string url)
{
    var client = new HttpClient();
    string results = await client.GetStringAsync(url);
    // 直接反序列化为单个ExchangeRate实例
    ExchangeRate rates = JsonConvert.DeserializeObject<ExchangeRate>(results);
    return rates;
}

如果业务逻辑确实需要用List存储结果,反序列化完成后手动添加到List即可:

List<ExchangeRate> ratesList = new List<ExchangeRate> { rates };

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:15:00