Если ваша пара ключ / значение не является фиксированной и данные должны быть конфигурируемыми, то в Newtonsoft.json есть одна особенность, которая будет использоваться здесь, и это [JsonExtensionData]
. Подробнее
Данные расширения теперь записываются при сериализации объекта.Чтение и запись данных расширения позволяет автоматически выполнять обход всех JSON без добавления каждого свойства к типу .NET, к которому вы десериализуетесь.Объявите только те свойства, которые вас интересуют, и пусть данные расширений сделают все остальное.
В вашем случае ключ rates
имеет значение в качестве динамических данных, поэтому ваш класс Rate
будет
public class Rate
{
[JsonExtensionData]
public Dictionary<string, JToken> Fields { get; set; }
}
И тогда вы можете десериализовать ваш ответный контент как
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<ExchangeRate>(response.Content);