2016-08-17 2 views
0

Я новичок в C#, так что это может быть очень глупый вопрос. Моя программа должна отправить запрос api на сервер и вывести данные в TextBox. Вызов API, который я обработал, и получает всю информацию в формате JSON.Вывод данных из JSON в текстовое поле C#

public void button2_Click(object sender, EventArgs e) 
{   
    var OTPSCODE = new TOTP("CODE"); 
    string API = "API KEY"; 
    string REQ; 

    REQ = SendRequest("WEBSITE"+API+"&code="+OTPSCODE.now()); 

    if (REQ != null) 
    { 
     //MessageBox.Show(REQ, "Hey there!", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     string json = Newtonsoft.Json.JsonConvert.SerializeObject(REQ); 

     BalanceTB.Text = // This is Where I want the output to be; 
    } 
} 

private string SendRequest(string url) 
{ 
    try 
    { 
     using (WebClient client = new WebClient()) 
     { 
      return client.DownloadString(new Uri(url)); 
     } 
    } 
    catch (WebException ex) 
    { 
     MessageBox.Show("Error while receiving data from the server:\n" + ex.Message, "Something broke.. :(", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
     return null; 
    } 
} 

В Web API возвращает это:

{ "status" : "success", 
"data" : { 
"available_balance" : "0", 
"pending_withdrawals" : "0.0000", 
"withdrawable_balance" : "0" 
} 
} 

Проблема заключается в том, я не знаю, как отображать только цифры в формате JSON [ "Статус"] или JSON [ "withdrawable_balance"] к текстовое окно. Кто-нибудь может мне помочь?

+0

Вам придется разобрать JSON, вы получите, чтобы извлечь отдельные элементы в настоящее время. Что-то вроде var obj = JObject.Parse (json); var balance = (string) obj ["data"] ["pullable_balance"]; –

ответ

2

Вы не должны сериализовать json string снова, вместо того, чтобы вы десериализации его:

var request = "WEBSITE"+API+"&code="+OTPSCODE.now(); 
var json = SendRequest(request); 
if (json != null) 
{ 
    //MessageBox.Show(REQ, "Hey there!", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    var response = Newtonsoft.Json.Linq.JObject.Parse(json); 

    BalanceTB.Text = string.Format("{0} or {1}", 
     (string)response["status"], 
     (int)response["data"]["withdrawable_balance"]); 
} 
+0

Спасибо за это. Единственное, что ответ ["data"] ["pullable_balance"] был строкой. Но спасибо за помощь. –

Смежные вопросы