Ответ 1
Вы должны десериализовать строку json для ввода List<BigCommerceOrderProduct>
. Нет необходимости в BigCommerceOrderProducts
классе
var myobj = jsSerializer.Deserialize<List<BigCommerceOrderProduct>>(jsonData);
У меня возникли проблемы с десериализацией массива в .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.
Любые идеи?
Вы должны десериализовать строку json для ввода List<BigCommerceOrderProduct>
. Нет необходимости в BigCommerceOrderProducts
классе
var myobj = jsSerializer.Deserialize<List<BigCommerceOrderProduct>>(jsonData);
Эта небольшая proggy отлично работает для меня. Может быть что-то неожиданное в потоке ответов.
Выход json: { "Данные": [{ "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();