My wpf application is communicating with php web api. First I post some data to web api and recieved json resonse. At server side php script just prepared an array and json_encode(arrayName)
is sent to client. At my client side I am using following code
using (WebResponse jsonResponse = request.GetResponse())
{
// Do something with response
StreamReader streamReader = new StreamReader(jsonResponse.GetResponseStream());
String responseData = streamReader.ReadToEnd();
MessageBox.Show(responseData);
}
in the message box I am able to see all the data sent by server. Now I don't have any idea how to assign this data to local variables? Kindly guide me.
http://i.imgur.com/1Qzds8G.png
EDIT
Response shown in message box is :-
[{"response":"true","user_id":"250","username":"sapan108"}]'
After Googling I created following class :-
public class UserData
{
public string response { get; set; }
public string error { get; set; }
public int user_id { get; set; }
public string username { get; set; }
}
Now How to assign json response to these variables.
Note: Due to less reputation unable to post image directly. Sorry for inconvenience.
1) You should create class to represent json data (http://json2csharp.com/)
public class RootObject
{
public string response { get; set; }
public string user_id { get; set; }
public string username { get; set; }
public string current_balance { get; set; }
public string message { get; set; }
public string outh_token { get; set; }
public List<string> lastFiveSpinNumbers { get; set; }
}
2) You should deserialize json data into class (the easiest way is to using Json.NET library - http://www.newtonsoft.com/json)
using (WebResponse jsonResponse = request.GetResponse())
{
// Do something with response
StreamReader streamReader = new StreamReader(jsonResponse.GetResponseStream());
String responseData = streamReader.ReadToEnd();
var myData = JsonConvert.DeserializeObject<List<RootObject>>(responseData);
// process your data
foreach (var rootObject in myData)
{
string response = rootObject.response;
// ...
}
}
Use Newtonsoft Json to deserialize response like :
public class UserData
{
public string response { get; set; }
public string error { get; set; }
public int user_id { get; set; }
public string username { get; set; }
}
UserData data = JsonConvert.DeserializeObject<UserData>(response);