JSON.NET将JSON反序列化为字典返回为空



我有这个JSON:

{
"AAPL": { "price": "131.85000" },
"eur/usd": { "price": "1.06290" },
"msft": { "price": "238.76000" }
}

当我试图将其反序列化到字典中时,它返回为空。

我使用的是TwelveDataAPI。https://twelvedata.com/docs real-time-price

我已经尝试创建一个简单的类,它将允许我反序列化这个JSON,即使有不同的股票和不同的数量。

我的类:

public class CurrentPriceClass
{
public class Root
{
public Dictionary<string, Price> Prices { get; set; }
}
public class Price
{
public string price { get; set; }
}
}

但是当我试图反序列化它时,它返回为null,并且我不能迭代它:

CurrentPriceClass.Root priceRoot = JsonConvert.DeserializeObject<CurrentPriceClass.Root>(
dataJson);
foreach (KeyValuePair<string, CurrentPriceClass.Price> price in priceRoot.Prices)
{
Console.WriteLine($"{price.Key}: {price.Value.price}");
}

迭代时得到的错误是:

对象引用未设置为对象的实例。

调试priceRoot时为null。我认为这是我们班的一个问题。

反序列化为Dictionary<string, CurrentPriceClass.Price>而不需要根类(CurrentPriceClass)。

Dictionary<string, CurrentPriceClass.Price> priceRoot = JsonConvert.DeserializeObject<Dictionary<string, CurrentPriceClass.Price>>(dataJson);
foreach (KeyValuePair<string, CurrentPriceClass.Price> price in priceRoot)
{
Console.WriteLine($"{price.Key}: {price.Value.price}");
}

Demo @ .NET Fiddle

最新更新