反序列化json返回0

时间:2019-03-06 11:20:24

标签: c# json

我正在尝试反序列化json数据,但是由于某种原因,它总是返回零值。我尝试了不同的方法,但无法获取该值

var result = JsonConvert.DeserializeObject<Tickers>(json);
       foreach (Rates rate in result)
         {
           Console.WriteLine(rate.EUR); 

         }

Json看起来像这样:

[
       {
          "base":"USD",
          "date":"2018-06-12",
          "rates":{
             "NZD":1.4053046000828844,
             "EUR":0.8288437629506838
             //plus many more
          }
       }
    ]

我有这些课程:

public class Tickers
{
    public string baseCurrency { get; set; }
    public string date { get; set; }
    public List<Rates> tickers { get; set; }
}

    public class Rates
{
    public double NZD { get; set; }
    public double EUR { get; set; }
    //etc

}

public partial class RootObject
{
    public string @base { get; set; }
    public string date { get; set; }
    public List<Rates> rates { get; set; }
}

2 个答案:

答案 0 :(得分:1)

You are not deserializing the object properly

You can use below C# classes (Generated using quicktype)

public partial class Tickers
{
    [JsonProperty("base")]
    public string Base { get; set; }

    [JsonProperty("date")]
    public DateTimeOffset Date { get; set; }

    [JsonProperty("rates")]
    public Rates Rates { get; set; }
}

public partial class Rates
{
    [JsonProperty("NZD")]
    public double Nzd { get; set; }

    [JsonProperty("EUR")]
    public double Eur { get; set; }
}

And then you have an array of tickers to work with so deserialize like

var results = JsonConvert.DeserializeObject<List<Tickers>>(json);

then you can use it like

foreach (Tickers ticker in result)
{
    Console.WriteLine(ticker.Rates.Eur); 
}

答案 1 :(得分:0)

You should iterate over result.tickers, as result is an object that contains the list of Rates.

var result = JsonConvert.DeserializeObject<Tickers>(json);
foreach (Rates rate in result.tickers)
{
    Console.WriteLine(rate.EUR); 
}