繁体   English   中英

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

[英]JSON.NET Deserializing a JSON into a dictionary comes back as null

我有这个 JSON:

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

当我尝试将其反序列化为字典时,它返回为 null。

我正在使用 TwelveDataAPI。 https://twelvedata.com/docs#real-time-price

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

我的class:

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}");
}

迭代时我得到的错误是:

Object 引用未设置为 object 的实例。

调试时priceRootnull 我假设这是我的 class 的问题。

反序列化为Dictionary<string, CurrentPriceClass.Price>而无需根 class ( 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}");
}

演示 @ .NET Fiddle

你应该这样做。

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

    public class Price
    {
        public string price { get; set; }
    }
}

var obj = JsonConvert.DeserializeObject<Dictionary<string, Price>>(json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM