C#-从API获取数据的更好方法?

C#-从API获取数据的更好方法?,c#,.net,C#,.net,我正在尝试创建从ETH到CZK的货币转换器,并使用API获取我的帐户余额和CZK的实际汇率 我用的是: WebClient client = new WebClient(); string downloadString = client.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734"); //Console.WriteLine(downloadS

我正在尝试创建从
ETH
CZK
的货币转换器,并使用API获取我的帐户余额和
CZK
的实际汇率

我用的是:

WebClient client = new WebClient();
string downloadString = client.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734");
//Console.WriteLine(downloadString);
downloadString = downloadString.Replace('.', ',');
//Console.WriteLine(downloadString);
string[] first = downloadString.Split(':');
string ETH = first[2].Remove(first[2].Length-1);
Console.WriteLine(ETH);
string downloadString2 = client.DownloadString("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CZK");
downloadString2 = downloadString2.Replace('.', ',');
string[] second = downloadString2.Split(':');
string CZK = second[1].Remove(second[1].Length - 1);
Console.WriteLine(CZK);
float eth = float.Parse(ETH);
float czk = float.Parse(CZK);
Console.WriteLine("You have {0} CZK", eth * czk);
是否有更好的方法从API中删除所有其他内容,然后删除数字?

谢谢

返回一个JSON。您可以使用JSON解析器对其进行解析


请参阅:

返回一个JSON。您可以使用JSON解析器对其进行解析


请参阅:

返回的字符串是JSON。使用库对其进行反序列化

流行

然后,您可以执行以下操作:

string responseString = client.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734")
dynamic reponseObj = JsonConvert.DeserializeObject<dynamic>(repsonseString);
double data = responseObj.data;
string responseString=client.DownloadString(“https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734")
dynamic ResponseObj=JsonConvert.DeserializeObject(repsonseString);
双数据=响应bj.data;

返回的字符串是JSON。使用库对其进行反序列化

流行

然后,您可以执行以下操作:

string responseString = client.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734")
dynamic reponseObj = JsonConvert.DeserializeObject<dynamic>(repsonseString);
double data = responseObj.data;
string responseString=client.DownloadString(“https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734")
dynamic ResponseObj=JsonConvert.DeserializeObject(repsonseString);
双数据=响应bj.data;
卢卡斯

为什么不转换为对象? 我认为你可以创建一个类。 如下:

   public class Link1Data
   {
       public bool status { get; set; }
       public float data { get; set; }
   }


   public class Link2CZK
   {
       public float CZK { get; set; }
   }
然后将代码更改为:

   WebClient webClient = new WebClient();
   var data = webClient.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734");
   var ethData = JsonConvert.DeserializeObject<Link1Data>(data);

   var data2 = webClient.DownloadString("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CZK");
   var czkData = JsonConvert.DeserializeObject<Link2CZK>(data2);

   Console.WriteLine("You have {0} CZK", ethData.data * czkData.CZK);
WebClient-WebClient=new-WebClient();
var data=webClient.DownloadString(“https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734");
var ethData=JsonConvert.DeserializeObject(数据);
var data2=webClient.DownloadString(“https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CZK");
var czkData=JsonConvert.DeserializeObject(数据2);
WriteLine(“您有{0}CZK”,ethData.data*czkData.CZK);
基于:

我没有测试

卢卡斯

为什么不转换为对象? 我认为你可以创建一个类。 如下:

   public class Link1Data
   {
       public bool status { get; set; }
       public float data { get; set; }
   }


   public class Link2CZK
   {
       public float CZK { get; set; }
   }
然后将代码更改为:

   WebClient webClient = new WebClient();
   var data = webClient.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734");
   var ethData = JsonConvert.DeserializeObject<Link1Data>(data);

   var data2 = webClient.DownloadString("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CZK");
   var czkData = JsonConvert.DeserializeObject<Link2CZK>(data2);

   Console.WriteLine("You have {0} CZK", ethData.data * czkData.CZK);
WebClient-WebClient=new-WebClient();
var data=webClient.DownloadString(“https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734");
var ethData=JsonConvert.DeserializeObject(数据);
var data2=webClient.DownloadString(“https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CZK");
var czkData=JsonConvert.DeserializeObject(数据2);
WriteLine(“您有{0}CZK”,ethData.data*czkData.CZK);
基于:


我没有测试

响应看起来像一个JSON格式的字符串。您应该使用JSON解析器来正确读取数据。是比较流行的一种。更好,是的。使用HttpClient和Json.NET.Time来了解ab out,我还建议您阅读,以及它如何与
WebClient
连接。响应看起来像一个Json格式的字符串。您应该使用JSON解析器来正确读取数据。是比较流行的一种。更好,是的。使用HttpClient和Json.NET.Time来了解ab out,我还建议您阅读它,以及它与
WebClient
的连接方式。谢谢,非常简单:)谢谢,非常简单:)