我在对.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<BigCommerceOrderProducts>(jsonData);
}下面是JSON以jsonData形式返回的数据字符串的子集。我删除了额外的字段。
"[
{\"id\":33,\"order_id\":230025,...},
{\"id\":34,\"order_id\":230025,...}
]"以下是对象:
[Serializable]
public class BigCommerceOrderProducts {
public List<BigCommerceOrderProduct> 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.有什么想法吗?
发布于 2012-01-27 21:26:04
您应该将json字符串反序列化为List<BigCommerceOrderProduct>类型。不需要BigCommerceOrderProducts类
var myobj = jsSerializer.Deserialize<List<BigCommerceOrderProduct>>(jsonData);发布于 2012-01-27 21:37:20
这个小程序对我来说很好。在响应流中可能会出现意外的情况。
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>();
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<BigCommerceOrderProducts>(x);
Console.WriteLine(a.Data[0].Order_id);
Console.ReadLine();https://stackoverflow.com/questions/9033730
复制相似问题