Reputation: 53
I'm writing a WCF service and trying to extract the value for SMS from the following JSON string which forms an http response. The rest of the response is superfluous for my requirements.
{"balance":{"sms":100,"mms":2},"status":"success"}
The code i've got at the moment only ever returns '0' as the integer for balance.
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;
}
}
Any advice would be gratefully received.
Upvotes: 0
Views: 377
Reputation: 10547
Your balanceObject
doesn't match your JSON. Your object should look more like this:
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;}
}
You would then retrieve your value like so:
phoneObject request = (phoneObject)js.Deserialize(result, typeof(phoneObject));
int balance = request.balance.sms;
return balance;
Upvotes: 2