serialize serializar recorrer newtonsoft example deserialize create crear c# json

serializar - Generics/JSON JavaScriptSerializer C#



recorrer json c# (2)

Estoy construyendo una aplicación winForms en NET3.5SP1 usando VS2008Express. Estoy tratando de deserializar un objeto utilizando la biblioteca System.Web.Script.Serialization.

El error es: Tipo ''jsonWinForm.Category'' no es compatible para la deserialización de una matriz.

¡Aclamaciones!

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<Category>(s); } } } } }


Encontré mi error ... debería ser:

Aclamaciones

JavaScriptSerializer serializer = new JavaScriptSerializer(); // create a generic list of categories List<Category> listOfCategories = new List<Category>(); // deserialize as a list of Categories, and put into listOfCategories listOfCategories = serializer.Deserialize<List<Category>>(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"; }


Es genial que hayas encontrado tu error. Si está buscando otra herramienta para la serialización JSON, puede intentar con JSON.Net .