Desserializando objetos JSON como List <type> não funciona com o serviço asmx
Estou tendo problemas para desserializar minha string JSON. Eu tenho uma classe do tipoperson
com propriedades públicas para o número de sequência do tipo int, nome e sobrenome. Eu quero passar uma matriz desses objetos no formato JSON e tê-los desserializados como uma lista para que eu possa percorrer eles no servidor, mas o ASP.NET diz que algo sobre não ter suporte é desserializado como uma matriz. Eu validei o JSON que estou produzindo e é válido. Existe algo de especial no JSON que o ASP.NET precisa ter antes de poder desserializar? O engraçado é que, se eu serializar um objeto de lista <person> para JSON, ele se parecerá exatamente com o JSON que estou produzindo. Devo estar faltando alguma coisa ... Para esclarecer, estou usando a biblioteca ASP.NET Ajax para desserializar. É isso que recebo do serviço da web:
{"Message": "Digite \ u0027System.Collections.Generic.IDictionary`2 [[System.String, mscorlib, versão = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089], [System.Object, mscorlib, versão = 2.0 .0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] \ u0027 não é suportado para desserialização de uma matriz. "
Na verdade, infelizmente, isso não parece ter nada a ver com desserialização, parece que você não pode passar uma matriz de objetos JSON para um serviço da Web asmx. Estou correcto? Se você não pode fazer isso, é possível passar uma coleção de objetos JSON para um serviço da Web e processá-los no servidor com ASP.NET e C #?
Atualizar:OK, aqui está o meu código. Aqui está a classe de pessoa:
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;
}
}
E aqui está minha string JSON:
[{"seq":1,"firstName":"Chris","lastName":"Westbrook"},
{"seq":2,"firstName":"sayyl","lastName":"westbrook"}]
E aqui está o código que estou usando
[WebMethod]
public void updatePeople(string json)
{
IList<person> people =
new JavaScriptSerializer().Deserialize<IList<person>>(json);
//do stuff...
}