Я пытаюсь получить значение закрытия первого и второго объекта из моего ответа API и сравнить их, а затем отобразить строку в зависимости от сравнения на HTML-странице
(я удалил свой личныйключ API и заменил его на 'your_api_key') Ответ, который я получаю от API, выглядит следующим образом;
{"Response":"Success","Type":100,"Aggregated":false,"Data":[{"time":1548191280,"close":1.13,"high":1.13,"low":1.13,"open":1.13,"volumefrom":0,"volumeto":0},{"time":1548191340,"close":1.13,"high":1.13,"low":1.13,"open":1.13,"volumefrom":0,"volumeto":0}],"TimeTo":1548191340,"TimeFrom":1548191280,"FirstValueInArray":true,"ConversionType":{"type":"direct","conversionSymbol":""},"RateLimit":{},"HasWarning":false}
Я пытался использовать оператор if, но получаю ошибки, я считаю, что проблема заключается в том, как я пытаюсь получить доступ к списку
Валюты.cs
public class DatumEurUSD
{
public double CLOSE { get; set; }
public double HIGH { get; set; }
public double LOW { get; set; }
public double OPEN { get; set; }
public string MOVEMENT { get; set; }
}
public class RootObjectEurUSD
{
public List<DatumEurUSD> Data { get; set; }
public double OldUSD { get => Data.First().CLOSE; set => OldUSD = value; } // value of USD one minute ago
public double NewUSD { get => Data.ElementAt(1).CLOSE; set => NewUSD = value; } // current value of USD
if(OldUSD == NewUSD)
{
DatumEurUSD.Movement.set("NONE")
}
else if(OldUSD > NewUSD)
{
DatumEurUSD.Movement.set("DOWN")
}
else if(OldUSD < NewUSD)
{
DatumEurUSD.Movement.set("UP")
}
}
HomeController.cs
public async Task<ActionResult> Currencies()
{
var req = WebRequest.Create(@"https://min-api.cryptocompare.com/data/pricemulti?fsyms=EUR&tsyms=USD,JPY,GBP,CHF,CAD,AUD,NZD&api_key=your_api_key");
var reqEurUSD = WebRequest.Create(@"https://min-api.cryptocompare.com/data/histominute?fsym=EUR&tsym=USD&limit=1&api_key=your_api_key");
//var reqEurAVG = WebRequest.Create(@"");
var r = await req.GetResponseAsync().ConfigureAwait(false);
var rEurUSD = await reqEurUSD.GetResponseAsync().ConfigureAwait(false);
//var rEurAVG = await reqEurAVG.GetResponseAsync().ConfigureAwait(false);
var responseReader = new StreamReader(r.GetResponseStream());
var responseData = new JsonTextReader(responseReader);
var responseReaderEurUSD = new StreamReader(rEurUSD.GetResponseStream());
var responseDataEurUSD = new JsonTextReader(responseReaderEurUSD);
//var responseReaderEurAVG = new StreamReader(rEurAVG.GetResponseStream());
//var responseDataEurAVG = new JsonTextReader(responseReaderEurAVG);
var serializer = new JsonSerializer();
var d = serializer.Deserialize<RootObjectEUR>(responseData);
var dEurUSD = serializer.Deserialize<RootObjectEurUSD>(responseDataEurUSD);
//var dEurAVG = serializer.Deserialize<RootObjectEurAVG>(responseDataEurUSD);
dynamic mymodel = new ExpandoObject();
mymodel.Eur = d.EUR;
mymodel.EurUSD = dEurUSD.Data;
return View(mymodel);
}
Currencies.cshtml
@model dynamic
<h1>Most Common Currency Exchanges</h1>
<table border="1">
<th>Currency</th>
<th>Rate</th>
<th>Movement</th>
<th>Open</th>
<th>Close</th>
<th>Date</th>
<tr>
<td>EUR/USD</td>
<td>@Model.Eur.USD</td>
<td>@Model.Data.MOVEMENT</td>
<td></td>
<td></td>
<td>@DateTime.Now</td>
</tr>
В настоящее время я получаю сообщение об ошибке в моем операторе if для неверного токена ипеременные не существуют в текущем контексте.
Я бы хотел, чтобы @ Model.Data.MOVEMENT отображал правильную строку в соответствии с условием if.