【发布时间】:2018-11-24 09:57:32
【问题描述】:
我使用这个简单的 API,https://exchangeratesapi.io/,并使用这个 uri:https://api.exchangeratesapi.io/history?start_at=2018-01-01&end_at=2018-03-01&symbols=SEK 进行测试。 我想反序列化“费率”部分。这是一个响应示例
这是代码
public class ExchangeRate
{
[JsonProperty(PropertyName = "end_at", Order = 1)]
public DateTime EndAt { get; set; }
[JsonProperty(PropertyName = "start_at", Order = 2)]
public DateTime StartAt { get; set; }
[JsonProperty(PropertyName = "rates", Order = 3)]
public Dictionary<string, Rate> Rates { get; set; }
[JsonProperty(PropertyName = "base", Order = 4)]
public string Base { get; set; }
}
public class Rate
{
[JsonProperty]
public Dictionary<string, double> Fields{ get; set; }
}
或
public class Rate
{
[JsonProperty]
public string CurrencyName { get; set; }
[JsonProperty]
public double CurrencyRate { get; set; }
}
我像这样对它进行反序列化
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<ExchangeRateHistory>(response.Content);
我的问题是该字段为空。有人有什么建议吗?
【问题讨论】:
-
你能告诉我们如何你反序列化 JSON 吗?这是问题的关键部分:-)
-
@Matthijs 我刚刚更新了问题
-
@ShrnPrmshr 参考这个stackoverflow.com/a/53447976/4425004
-
@ShrnPrmshr 属性值在数组中,反序列化数组很困难,是否可以将数据结构更改为列表,并将速率中的日期部分设为
[{ "Logdate": "2018-10-26", "SEK":9.823},{...}]。以便它可以轻松反序列化。 -
参考 SeM 先生在这个问题下给出的 cmets stackoverflow.com/q/53447346/4425004 这样做的方法也在这里c-sharpcorner.com/article/…
标签: c# json json-deserialization