У меня возникла проблема десериализации моей строки JSON. У меня есть класс типа person
с общедоступными свойствами для порядкового номера типа int, имя и фамилия. Я хочу передать массив этих объектов в формате JSON и их десериализовать как список, чтобы я мог пропустить их на сервере, но ASP.NET говорит о том, что не поддерживается, чтобы десериализоваться как массив. Я подтвердил JSON, который я производю, и он действителен. Есть ли что-то особенное в JSON, который должен иметь ASP.NET, прежде чем он сможет десериализовать? Самое смешное, если я сериализую объект списка <person> для JSON, он выглядит точно так же, как JSON, который я создаю. Мне нужно что-то упустить... Чтобы уточнить, я использую ASP.NET Ajax-библиотеку для десериализации. Это то, что я вернусь из веб-службы:
{ "Сообщение": "Тип\u0027System.Collections.Generic.IDictionary`2 [[System.String, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089], [System.Object, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]]\u0027 не поддерживается для десериализации массива."
На самом деле, к сожалению, это не имеет никакого отношения к десериализации, кажется, что вы не можете передать массив объектов JSON в веб-службу asmx. Я прав? Если вы не можете этого сделать, можно ли передать коллекцию объектов JSON в веб-службу и обработать их на сервере с помощью ASP.NET и С#?
Обновление:
ОК, вот мой код. Вот класс человека:
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...
}