在wpf中序列化JSON数据

时间:2014-08-08 04:12:12

标签: wpf json

我有一个以下列方式返回json数据的网址

{"title":"Test Title","image_url":"http://i.imgur.com/aZO5Kol.jpg","random_window":2,"windows":{"1":{"title":"Random 1"},"2":{"title":"Other Window 2"}},"thankyou_url":"http://google.com"}

现在我想对其进行反序列化,以便我可以根据收到的数据编写条件。 我想实现这个

enter image description here

必须打印通过JSON接收的图像和名称。并根据窗口的数量,我应该显示窗口

我宣布了一个班级

 public class JsonData
{
    string title { get; set; }
    string image_url { get; set; }
    string random_window { get; set; }
    string[] windows { get; set; }
    string thankyou_url { get; set; }
}

我写得像这样

            WebClient objWebClient = new WebClient();
            var jss = new JavaScriptSerializer();
            string strJsonURL = "url";
            var vJsondata = string.Empty;
            vJsondata = objWebClient.DownloadString(strJsonURL);
             var data = jss.Deserialize<object>(vJsondata);
            try
            {
              var x = ((IList)data).Cast<object>().Select(o => o.ToString()).ToList();
            }

但是得到了这个错误:

Unable to cast object of type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 'System.Collections.IList'.

1 个答案:

答案 0 :(得分:0)

windows似乎是Dictionary,而不是您在JsonData中定义的字符串数组。你必须测试这个,但从我能说的内容应该更像是这样:

public class JsonData
{
    string title { get; set; }
    string image_url { get; set; }
    string random_window { get; set; }
    Dictionary<string, WindowData> windows { get; set; }
    string thankyou_url { get; set; }
}

public class WindowData
{
    string title { get; set; }
}