2016-02-05 49 views
0

我正在編寫一個WCF服務,並嘗試從下面的JSON字符串中提取SMS的值,該字符串形成一個http響應。其餘的迴應對我的要求來說是多餘的。如何從JSON http響應中提取單個元素並將其作爲整數傳遞給C#?

{"balance":{"sms":100,"mms":2},"status":"success"} 

我目前得到的代碼只返回'0'作爲平衡整數。

public class balanceObject 
    { 
     public int sms { get; set;} 
     public int mms {get; set;} 
     public string status {get; set;} 
    } 

    public int balanceRequest() 
    { 
     using (var wb = new WebClient()) 
      { 
       byte[] response = wb.UploadValues("http://api.txtlocal.com/balance/?apiKey=", new NameValueCollection() 
      { 
      {"apiKey" , api}, 
      }); 

      string result = System.Text.Encoding.UTF8.GetString(response); 
      JavaScriptSerializer js = new JavaScriptSerializer(); 
      balanceObject request = (balanceObject)js.Deserialize(result, typeof(balanceObject)); 
      int balance = request.sms; 
      return balance; 

      } 
     } 

任何意見將受到感謝。

回答

2

您的balanceObject與您的JSON不符。你的目標應該看起來更像是這樣的:

public class phoneObject 
{ 
    public string status {get; set;} 
    public balanceObject balance {get; set;} 
} 

public class balanceObject 
{ 
    public int sms { get; set;} 
    public int mms {get; set;} 
} 

你會再找回你的價值,像這樣:

phoneObject request = (phoneObject)js.Deserialize(result, typeof(phoneObject)); 
int balance = request.balance.sms; 
return balance; 
+0

謝謝,工作就像一個魅力 - 只是作爲一個參考的說明,我不得不改變'(balanceObject )js.Deserialize'到'(phoneObject)js.Deserialize' –

相關問題