Ваши структуры данных должны немного отличаться.
public class Veco
{
public decimal usd { get; set; }
}
public class RootObject
{
public Veco veco { get; set; }
}
Обратите внимание, что Json не является массивом или списком, поэтому вам необходимо использовать List <> в методе JsonConvert.DeserializeObject.Вместо этого вам нужно следующее.
var result = JsonConvert.DeserializeObject<RootObject>(jsonString);
Пример,
var jsonString = @"{'veco':{'usd':0.01558532}}";
var result = JsonConvert.DeserializeObject<RootObject>(jsonString);
Console.WriteLine($"USD Rate : {result.veco.usd}");
Вывод
USD Rate 0.01558532
Переписать ваш метод,
public static void StartGet()
{
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(string.Format(VECO.VecoPriceURL));
WebReq.Method = "GET";
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
string jsonString;
using (Stream stream = WebResp.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
jsonString = reader.ReadToEnd();
}
var item = JsonConvert.DeserializeObject<RootObject>(jsonString);
Console.WriteLine(item.veco.usd);
}
Обновление
На основании вашего комментария я бы переписал ваш метод следующим образом.Вам больше не нужна структура данных.
public static void StartGet(string id)
{
var url = $"https://api.coingecko.com/api/v3/simple/price?ids={id}&vs_currencies=usd";
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
WebReq.Method = "GET";
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
string jsonString;
using (Stream stream = WebResp.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
jsonString = reader.ReadToEnd();
}
var result = JsonConvert.DeserializeObject<JToken>(jsonString);
Console.WriteLine($"For {id},USD Rate : {result[id].Value<string>("usd")}");
}
Теперь вы можете использовать метод следующим образом
StartGet("veco");
StartGet("eos");
StartGet("uraniumx");
Вывод
For veco,USD Rate : 0.01581513
For eos,USD Rate : 2.42
For uraniumx,USD Rate : 0.890397