У меня проблемы с десериализацией строки JSON. У меня есть класс типа person
с открытыми свойствами для порядкового номера типа int, имени и фамилии. Я хочу передать массив этих объектов в формате JSON и десериализовать их в виде списка, чтобы я мог просматривать их на сервере, но ASP.NET говорит, что не поддерживается десериализация в виде массива. Я проверил JSON, который я создаю, и он действителен. Есть ли в JSON что-то особенное, что нужно ASP.NET для десериализации? Самое смешное, что если я сериализую объект list в JSON, он будет выглядеть точно так же, как и JSON, который я создаю. Я должен что-то упустить ... Чтобы уточнить, я использую библиотеку ASP.NET Ajax для десериализации. Вот что я получаю от веб-сервиса:
{"Сообщение": "Тип \ u0027System.Collections.Generic.IDictionary`2 [[System.String, mscorlib, Версия = 2.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089], [System.Object, mscorlib, Версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089]] \ u0027 не поддерживается для десериализации массива. "
На самом деле, к сожалению, это не имеет ничего общего с десериализацией, похоже, вы не можете передать массив объектов JSON в веб-службу asmx. Я прав? Если вы не можете этого сделать, возможно ли передать коллекцию объектов JSON в веб-службу и обработать их на сервере с помощью ASP.NET и C #?
Обновление:
ОК, вот мой код. Вот класс человека:
public class person
{
public person()
{
//
// TODO: Add constructor logic here
//
}
public int seq
{
get;
set;
}
public string firstName
{
get;
set;
}
public string lastName
{
get;
set;
}
}
А вот моя строка JSON:
[{"seq":1,"firstName":"Chris","lastName":"Westbrook"},
{"seq":2,"firstName":"sayyl","lastName":"westbrook"}]
А вот код, который я использую
[WebMethod]
public void updatePeople(string json)
{
IList<person> people =
new JavaScriptSerializer().Deserialize<IList<person>>(json);
//do stuff...
}