我目前正在尝试解析从IEX api获取的JSON数据,该数据由股票及其信息组成。我遇到的问题是,根据所请求的股票/符号(即AAPL,GOOGL等),您要求返回的键会更改为该符号。可以在此处查看返回的JSON的示例:https://api.iextrading.com/1.0/stock/market/batch?symbols=aapl,fb,googl&types=quote,chart&range=1m
要反序列化,我正在使用JSON.NET和以下类:
public class Stock {
public quote Quote { get; set;}
public chart Chart { get; set;}
}
public class Root {
public Stock[] Stock;
}
然后我也有引用和图表对象的类。然后,我使用以下方法反序列化JSON:
var stocks = JsonConvert.DeserializeObject<Root>(jsonstring);
但是,这不起作用,但是当将“ Stock”类重命名为符号名称之一时,此方法起作用,但是只有该符号会被解析为JSON。我不知道这是怎么回事,因此非常感谢您的帮助!
答案 0 :(得分:2)
您的问题是您的类模型与API输出的json模式不匹配。输出不是股票列表,而是StockName的映射:Stock
您可以将其反序列化为Dictionary<string, Stock>
而不是Root
,这样您就可以到达需要的位置。