如何在wpf应用程序中使用json响应

时间:2015-03-22 07:17:54

标签: c# php json wpf

我的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响应。

注意:由于信誉较少,无法直接发布图片。很抱歉给您带来不便。

2 个答案:

答案 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);