我有一个以下列方式返回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"}
现在我想对其进行反序列化,以便我可以根据收到的数据编写条件。 我想实现这个
必须打印通过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'.
答案 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; }
}