如何在C#中从World Trading Data API的JSON提取股票价格
提取World Trading Data API返回的股票价格解决方案
嘿,我来帮你搞定从JSON里提取股票价格的问题!你已经完成了下载JSON的核心步骤,接下来用Newtonsoft.Json.Linq解析就很简单了,下面是具体的实现步骤和完整代码:
前提准备
首先确保你的项目已经安装了Newtonsoft.Json NuGet包(也就是常用的Json.NET),如果还没装,可以通过NuGet包管理器搜索安装,或者在Package Manager Console里执行命令:
Install-Package Newtonsoft.Json
完整代码实现
把你原来的get_stock_price方法修改成这样就可以提取价格了:
using Newtonsoft.Json.Linq; using System.Net; static void get_stock_price() { string json; using (var web = new WebClient()) { var url = "https://www.worldtradingdata.com/api/v1/stock?symbol=AAPL,MSFT,HSBA.L&api_token=Io4R1hqd0rLONZcMp6tJgupqjVEyO0pVJAo65a6QlJjHjVBpEyt5nm73zZ5X"; json = web.DownloadString(url); } // 把JSON字符串解析为可操作的JObject对象 JObject stockResponse = JObject.Parse(json); // 获取API返回的股票数据数组(对应JSON里的"data"字段) JArray stockList = (JArray)stockResponse["data"]; // 遍历每只股票,提取代码和价格 foreach (JToken stock in stockList) { string symbol = stock["symbol"].ToString(); // 可以直接用字符串展示,或者转成decimal类型方便数值计算 if (decimal.TryParse(stock["price"].ToString(), out decimal price)) { Console.WriteLine($"股票 {symbol} 当前价格: {price:C}"); } else { Console.WriteLine($"股票 {symbol} 的价格解析失败"); } } }
代码细节说明
JObject.Parse(json):将下载到的纯文本JSON转换成可通过键名访问的JObject实例stockResponse["data"]:根据API返回的结构,顶级的data字段是一个数组,所以我们把它转成JArray来遍历- 遍历JArray里的每个JToken,每个Token对应一只股票的完整数据,直接通过
["symbol"]、["price"]这样的键名就能提取对应的值 - 用
decimal.TryParse处理价格是为了避免格式异常,如果只是需要展示,直接用stock["price"].ToString()也完全没问题
额外小技巧
如果你只需要某一只特定股票的价格,比如Apple的AAPL,可以用LINQ直接筛选,不用遍历整个数组:
var appleStock = stockList.FirstOrDefault(s => s["symbol"].ToString() == "AAPL"); if (appleStock != null) { decimal applePrice = decimal.Parse(appleStock["price"].ToString()); Console.WriteLine($"Apple当前价格: {applePrice:C}"); }
内容的提问来源于stack exchange,提问作者lsama
相关产品推荐
相关产品推荐

