Я использую этот простой 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);
Моя проблема в том, что это поле равно нулю. Есть ли у кого-нибудь предложения?
@Matthijs Я только что обновил вопрос
@ShrnPrmshr отсылайте к этому stackoverflow.com/a/53447976/4425004
Ставки свойств @ShrnPrmshr находятся в массиве, десериализация массива затруднена, возможно ли изменить структуру данных в виде списка и выделить эту часть даты внутри ставок как [{ "Logdate": "2018-10-26", "SEK":9.823},{...}]. чтобы его можно было легко десериализовать.
См. Комментарии г-на СэМ к этому вопросу stackoverflow.com/q/53447346/4425004, также подход к этому здесь c-sharpcorner.com/article/…





Если ваша пара ключ / значение не является фиксированной и данные должны быть настраиваемыми, тогда Newtonsoft.json имеет одну функцию, которую можно использовать здесь, и это [JsonExtensionData]. Читать далее
Extension data is now written when an object is serialized. Reading and writing extension data makes it possible to automatically round-trip all JSON without adding every property to the .NET type you’re deserializing to. Only declare the properties you’re interested in and let extension data do the rest.
В вашем случае ключ rates имеет значение как динамические данные, поэтому ваш класс Rate будет
public class Rate
{
[JsonExtensionData]
public Dictionary<string, JToken> Fields { get; set; }
}
А затем вы можете десериализовать содержимое ответа как
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<ExchangeRate>(response.Content);
Не могли бы вы показать нам как, вы десериализуете JSON? Это ключевая часть проблемы :-)