JavaScriptSerializer.Deserialize数组

我在.NET MVC3中反序列化数组时遇到问题,任何帮助都会受到赞赏。

这是代码片段:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); string jsonData = reader.ReadToEnd(); result = (BigCommerceOrderProducts)jsSerializer.Deserialize(jsonData); } 

这是JSON作为jsonData返回的数据字符串的子集。 我删除了额外的字段。

 "[ {\"id\":33,\"order_id\":230025,...}, {\"id\":34,\"order_id\":230025,...} ]" 

这是对象:

 [Serializable] public class BigCommerceOrderProducts { public List Data { get; set; } } [Serializable] public class BigCommerceOrderProduct { public int Id { get; set; } public int Order_id { get; set; } ... } 

我收到这个错误:

 "Type 'Pxo.Models.BigCommerce.BigCommerceOrderProducts' is not supported for deserialization of an array. 

有任何想法吗?

您应该反序列化您的json字符串以键入List 。 不需要BigCommerceOrderProducts

 var myobj = jsSerializer.Deserialize>(jsonData); 

这个小小的程序对我来说很好。 可能是响应流中的意外情况。

json输出为:{“Data”:[{“Id”:33,“Order_id”:230025},{“Id”:34,“Order_id”:230025}]}

  JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); BigCommerceOrderProducts a = new BigCommerceOrderProducts(); a.Data = new List(); BigCommerceOrderProduct b = new BigCommerceOrderProduct(); b.Id = 33; b.Order_id = 230025; a.Data.Add(b); b = new BigCommerceOrderProduct(); b.Id = 34; b.Order_id = 230025; a.Data.Add(b); string x = jsSerializer.Serialize(a); Console.WriteLine(x); a = jsSerializer.Deserialize(x); Console.WriteLine(a.Data[0].Order_id); Console.ReadLine();