Один простой подход, чтобы справиться с вашей хитрой частью JSON
1) Десериализовать ваш JSON до Dictionary<string, dynamic>
.
2) Затем сгладьте ваш словарный результат до List<Quote>
.
string json = File.ReadAllText(@"Path to your json");
List<Quote> quotes = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json)
.Select(x => new Quote
{
Symbol = x.Key,
Price = x.Value.price //<= x.Value is dynamic type so you can access your key with dot(.) separator
})
.ToList();
//-------------Print the result to Console-------------
Console.WriteLine("Symbol\tPrice");
Console.WriteLine("----------------------");
foreach (var quote in quotes)
{
Console.WriteLine(quote.Symbol +"\t" + quote.Price);
}
Альтернатива:
Вы можете использовать JToken
вместо dynamic
,
List<Quote> quotes = JsonConvert.DeserializeObject<Dictionary<string, JToken>>(json)
.Select(x => new Quote
{
Symbol = x.Key,
Price = Convert.ToDouble(x.Value["price"])
})
.ToList();
Выход:
![enter image description here](https://i.stack.imgur.com/NbPzK.png)