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

如何用Newtonsoft在C#中解码AlphaVantage返回的股票数据JSON

使用Newtonsoft.Json解码AlphaVantage股票数据JSON响应

步骤1:安装Newtonsoft.Json包

通过NuGet包管理器搜索安装,或者在Package Manager Console中执行命令:

Install-Package Newtonsoft.Json

步骤2:定义匹配JSON结构的实体类

由于AlphaVantage返回的JSON键包含序号和空格,需要用JsonProperty特性映射属性名与JSON键:

using Newtonsoft.Json;
using System;

public class GlobalQuoteResponse
{
    [JsonProperty("Global Quote")]
    public GlobalQuote GlobalQuote { get; set; }
}

public class GlobalQuote
{
    [JsonProperty("01. symbol")]
    public string Symbol { get; set; }

    [JsonProperty("02. open")]
    public decimal Open { get; set; }

    [JsonProperty("03. high")]
    public decimal High { get; set; }

    [JsonProperty("04. low")]
    public decimal Low { get; set; }

    [JsonProperty("05. price")]
    public decimal Price { get; set; }

    [JsonProperty("06. volume")]
    public long Volume { get; set; }

    [JsonProperty("07. latest trading day")]
    public DateTime LatestTradingDay { get; set; }

    [JsonProperty("08. previous close")]
    public decimal PreviousClose { get; set; }

    [JsonProperty("09. change")]
    public decimal Change { get; set; }

    [JsonProperty("10. change percent")]
    public string ChangePercent { get; set; }
}

步骤3:反序列化JSON字符串

获取API返回的JSON字符串后,使用JsonConvert.DeserializeObject方法解析为实体类对象:

// 示例JSON字符串(实际中替换为API返回的内容)
string json = @"{ ""Global Quote"": { ""01. symbol"": ""VK.PAR"", ""02. open"": ""10.2300"", ""03. high"": ""10.3500"", ""04. low"": ""10.1400"", ""05. price"": ""10.3200"", ""06. volume"": ""751332"", ""07. latest trading day"": ""2023-06-28"", ""08. previous close"": ""10.2150"", ""09. change"": ""0.1050"", ""10. change percent"": ""1.0279%"" } }";

// 反序列化
var quoteData = JsonConvert.DeserializeObject<GlobalQuoteResponse>(json);

// 访问解析后的数据
if (quoteData?.GlobalQuote != null)
{
    Console.WriteLine($"股票代码:{quoteData.GlobalQuote.Symbol}");
    Console.WriteLine($"开盘价:{quoteData.GlobalQuote.Open:C}");
    Console.WriteLine($"最高价:{quoteData.GlobalQuote.High:C}");
    Console.WriteLine($"最新价:{quoteData.GlobalQuote.Price:C}");
    Console.WriteLine($"涨跌幅:{quoteData.GlobalQuote.ChangePercent}");
}

注意事项

  • 如果API返回的字段可能为空(如休市时无成交量数据),可将对应属性改为可空类型(如long? Volume、decimal? Open)。
  • 建议用try-catch块包裹反序列化逻辑,捕获JsonSerializationException避免程序崩溃。
  • 确保JSON字符串格式正确,无转义错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:20:37