2017-07-11 6 views
0

ETHからCZKへの通貨変換を作成しようとしています。私はAPIを使用して、アカウントと実際の為替レートの差額をCZKにしています。C# - APIからデータを取得するより良い方法は?

私はこれを使用しています:

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からの数字を他のすべてのものを削除する良い方法はありますか?
ありがとう

+1

レスポンスはJSON形式の文字列のように見えます。 JSONパーサを使用してデータを正しく読み取る必要があります。 [JSON.Net](http://www.newtonsoft.com/json)は、より一般的なものの1つです。 –

+0

より良い、はい。 HttpClientとJson.NETを使用してください。 –

+0

[JSON](http://www.json.org) – zaph

答えて

3

文字列がJSONです。ライブラリを使用して逆シリアル化します。

string responseString = client.DownloadString("https://api.nanopool.org/v1/eth/balance/0x1b0cab6db1672349b8f8a6d8d8903ab58ae0d734") 
dynamic reponseObj = JsonConvert.DeserializeObject<dynamic>(repsonseString); 
double data = responseObj.data; 
+0

ありがとう、非常に簡単:) –

0

ルーカス:

Newtonsoft's JSON.netは、あなたが、その後のような何かを行うことができます

人気があります。

なぜオブジェクトに変換しないのですか? 私はあなたがクラスを作成できると思います。 にはここに:私はテストしていない How to convert a Stream into an object

:に基づいて

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); 

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


    public class Link2CZK 
    { 
     public float CZK { get; set; } 
    } 

その後にコードを変更します。 ;-)

関連する問題