有多个键时将JSON映射到C#类

时间:2018-12-12 20:44:10

标签: c# json parsing json.net mapping

我目前正在尝试解析从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。我不知道这是怎么回事,因此非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您的问题是您的类模型与API输出的json模式不匹配。输出不是股票列表,而是StockName的映射:Stock

您可以将其反序列化为Dictionary<string, Stock>而不是Root,这样您就可以到达需要的位置。