我正在尝试反序列化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; }
}
答案 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);
}