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

如何在C#中使用Newtonsoft解析批量股票报价API的动态JSON数组?

解析批量报价API的动态JSON数据

别担心,用Newtonsoft.Json处理这个动态的「Stock Quotes」数组其实很简单,我给你两种常用的方案,按需选就行:

方案一:强类型反序列化(推荐,更安全易维护)

首先根据API返回的JSON结构,定义对应的实体类。假设你的批量报价JSON返回格式大概是这样:

{
  "SomeOtherField": "xxx",
  "Stock Quotes": [
    {
      "Symbol": "AAPL",
      "Price": 180.5,
      "Timestamp": "2024-05-20T14:30:00"
    },
    {
      "Symbol": "MSFT",
      "Price": 380.2,
      "Timestamp": "2024-05-20T14:30:00"
    }
  ]
}

那你可以创建两个类:

// 对应整个API返回的根对象
public class BatchQuoteResponse
{
    // 注意这里的JsonProperty要和JSON里的键名完全匹配,包括空格
    [JsonProperty("Stock Quotes")]
    public List<StockQuote> StockQuotes { get; set; }
    // 如果还有其他顶层字段,也可以在这里添加对应的属性
}

// 对应数组里的单个股票报价
public class StockQuote
{
    public string Symbol { get; set; }
    public decimal Price { get; set; }
    public DateTime Timestamp { get; set; }
    // 根据实际返回的字段添加更多属性
}

接下来就可以解析并提取数据了:

// 假设你已经通过HTTP请求获取到了JSON字符串,存在jsonResponse变量里
var batchResponse = JsonConvert.DeserializeObject<BatchQuoteResponse>(jsonResponse);

// 遍历StockQuotes数组,提取每一条数据
foreach (var quote in batchResponse.StockQuotes)
{
    Console.WriteLine($"股票代码:{quote.Symbol},当前价格:{quote.Price},时间:{quote.Timestamp}");
    // 这里可以把数据存入你的应用或者做其他处理
}

方案二:动态解析(适合快速测试或结构经常变动的情况)

如果不想定义实体类,也可以用JObject直接操作JSON:

var jsonObj = JObject.Parse(jsonResponse);
// 获取「Stock Quotes」数组
var stockQuotesArray = jsonObj["Stock Quotes"] as JArray;

// 遍历数组
foreach (var quoteItem in stockQuotesArray)
{
    string symbol = quoteItem["Symbol"].ToString();
    decimal price = decimal.Parse(quoteItem["Price"].ToString());
    DateTime timestamp = DateTime.Parse(quoteItem["Timestamp"].ToString());
    
    Console.WriteLine($"股票代码:{symbol},当前价格:{price},时间:{timestamp}");
}

两种方案都能轻松提取动态数量的股票数据,强类型的方式更适合长期维护,因为有编译时检查,不容易出错;动态方式更灵活,适合临时调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:50:50