Generics / JSON JavaScriptSerializer C#
Generics / JSON JavaScriptSerializer C#
我正在使用VS2008Express构建一个.NET3.5SP1的WinForms应用程序。尝试使用System.Web.Script.Serialization库反序列化对象。
错误信息是:\"jsonWinForm.Category\"类型不支持数组的反序列化。
干杯!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Web; using System.Net; using System.IO; using System.Web.Script.Serialization; namespace jsonWinForm { public class Category { public int categoryid; public string name; public int serverimageid; public DateTime dateuploaded; public bool enabled; } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (WebClient client = new WebClient()) { //manipulate request headers (optional) client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); string targetUri = "http://www.davemateer.com/ig/genius/category.php"; //execute request and read response as string to console using (StreamReader reader = new StreamReader(client.OpenRead(targetUri))) { string s = reader.ReadToEnd(); textBox1.Text = s; Category cat = new Category(); JavaScriptSerializer serializer = new JavaScriptSerializer(); // this fails with a //Type 'jsonWinForm.Category' is not supported for deserialization of an array. serializer.Deserialize(s); } } } } }
admin 更改状态以发布 2023年5月20日
我找到了我的错误...应该是:
干杯
JavaScriptSerializer serializer = new JavaScriptSerializer(); // create a generic list of categories ListlistOfCategories = new List (); // deserialize as a list of Categories, and put into listOfCategories listOfCategories = serializer.Deserialize >(s); //iterate through list and display in text box foreach (Category item in listOfCategories) { textBox2.Text += item.categoryid.ToString() + "\r\n"; textBox2.Text += item.name.ToString() + "\r\n"; textBox2.Text += item.serverimageid.ToString() + "\r\n"; textBox2.Text += item.dateuploaded.ToString() + "\r\n"; textBox2.Text += item.enabled.ToString() + "\r\n"; }