我的wpf应用程序正在与php web api进行通信。首先,我将一些数据发布到web api并收到json的共鸣。在服务器端,php脚本刚准备好一个数组,json_encode(arrayName)
被发送到客户端。在我的客户端,我使用以下代码
using (WebResponse jsonResponse = request.GetResponse())
{
// Do something with response
StreamReader streamReader = new StreamReader(jsonResponse.GetResponseStream());
String responseData = streamReader.ReadToEnd();
MessageBox.Show(responseData);
}
在消息框中的我能够看到服务器发送的所有数据。现在我不知道如何将这些数据分配给局部变量?请指导我。
http://i.imgur.com/1Qzds8G.png
修改
消息框中显示的响应是: -
[{"response":"true","user_id":"250","username":"sapan108"}]'
谷歌搜索后,我创建了以下课程: -
public class UserData
{
public string response { get; set; }
public string error { get; set; }
public int user_id { get; set; }
public string username { get; set; }
}
现在如何为这些变量分配json响应。
注意:由于信誉较少,无法直接发布图片。很抱歉给您带来不便。
答案 0 :(得分:0)
1)您应该创建类来表示json数据(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)你应该将json数据反序列化为类(最简单的方法是使用Json.NET库 - 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;
// ...
}
}
答案 1 :(得分:0)
使用Newtonsoft Json反序列化响应,如:
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);