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

C#技术问询:如何从Web导入API数据并转为double类型在脚本中使用

在C#中从Web获取API数据并转换为double类型

我来一步步帮你解决这个问题,从获取API数据到转换并使用double值,都是C#里很常用的操作,下面是具体的实现方案:

1. 用HttpClient获取API数据

.NET自带的HttpClient是发起Web请求的首选工具,它简单高效。先确保你的项目引用了System.Net.Http命名空间,下面是完整的请求示例:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class ApiDataHandler
{
    static async Task Main(string[] args)
    {
        // 注意:HttpClient推荐复用,不要每次请求都新建,避免套接字资源耗尽
        using var httpClient = new HttpClient();
        
        try
        {
            // 替换成你的实际API地址
            string apiUrl = "https://your-target-api.com/your-data-endpoint";
            HttpResponseMessage response = await httpClient.GetAsync(apiUrl);
            
            // 确保请求成功(HTTP状态码为2xx)
            response.EnsureSuccessStatusCode();
            
            // 读取API返回的原始内容
            string rawResponse = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"API返回原始内容: {rawResponse}");
            
            // 接下来把内容转换为double并使用
            ProcessDoubleData(rawResponse);
        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine($"请求API失败: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"意外错误: {ex.Message}");
        }
    }
}

2. 将API内容转换为double并使用

接下来处理核心的转换逻辑,这里分两种常见情况:

情况1:API返回纯数字字符串

如果API直接返回类似"19.99"或"1234.56"的纯数字字符串,用double.TryParse做安全转换(避免无效内容抛出异常):

static void ProcessDoubleData(string rawContent)
{
    // 安全转换,失败时返回false
    if (double.TryParse(rawContent, out double convertedValue))
    {
        Console.WriteLine($"转换后的double值: {convertedValue}");
        // 在这里写你使用这个值的业务逻辑
        UseDoubleValue(convertedValue);
    }
    else
    {
        Console.WriteLine("API返回的内容无法转换为有效的double类型");
    }
}

// 示例:使用转换后double值的方法
static void UseDoubleValue(double value)
{
    // 比如做计算、存储或其他业务操作
    double tax = value * 0.08;
    Console.WriteLine($"计算后的税费: {tax:F2}");
}

情况2:API返回JSON结构(包含数字字段)

如果API返回的是JSON对象(比如{"price": 29.99, "id": 1001}),需要先解析JSON,用.NET自带的System.Text.Json即可:

首先添加using System.Text.Json;,然后定义对应JSON结构的类,再解析:

// 定义和JSON结构匹配的类
public class ApiResponseModel
{
    public double Price { get; set; }
    // 其他字段可以按需添加
}

static void ProcessDoubleData(string rawContent)
{
    try
    {
        ApiResponseModel? responseModel = JsonSerializer.Deserialize<ApiResponseModel>(rawContent);
        if (responseModel != null)
        {
            double targetValue = responseModel.Price;
            Console.WriteLine("从JSON中提取的double值: {targetValue}");
            UseDoubleValue(targetValue);
        }
    }
    catch (JsonException ex)
    {
        Console.WriteLine($"JSON解析失败: {ex.Message}");
    }
}

3. 关键注意事项

  • HttpClient复用:不要在每次请求时新建HttpClient,长期运行的服务中可以用依赖注入的方式管理单例实例。
  • 异常处理:一定要捕获请求和转换过程中的异常,避免程序崩溃,同时方便排查问题。
  • 区域设置问题:如果API返回的数字用逗号作为小数点(比如"123,45"),可以在TryParse时指定对应的区域信息,比如double.TryParse(rawContent, NumberStyles.Any, CultureInfo.GetCultureInfo("de-DE"), out double value)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:41:34