Я понял это. Я не переносился, мой JSON в объекте как Ajax ASP.NET требует. Для будущих средств просмотра этого вопроса все объекты JSON должны быть перенесены с основным объектом прежде чем быть отправленным в веб-сервис. Самый легкий способ сделать это должно создать объект в JavaScript и использовать что-то как json2.js к stringify он. Кроме того, при использовании asmx веб-сервиса объекты должны иметь __ атрибут типа, который будет сериализирован правильно. Пример этого мог бы быть:
var person=new object;
person.firstName="chris";
person.lastName="Westbrook";
person.seq=-1;
var data=new object;
data.p=person;
JSON.stringify(data);
Это создаст объект, названный p
, который перенесет объект человека. Это может затем быть связано с параметром p
в веб-сервисе. В списки типа person
входят, точно так же принимают использование массива людей вместо просто отдельного объекта. Я надеюсь, что это помогает кому-то.
Вы могли показать строку JSON, которую Вы пытаетесь десериализовать, и способ, которым Вы используете эти , Десериализовывает метод? Следующее хорошо работает:
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace Test
{
class Program
{
class Person
{
public int SequenceNumber { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public static void Main()
{
string json = "[{\"SequenceNumber\":1,\"FirstName\":\"FN1\",\"LastName\":\"LN1\"},{\"SequenceNumber\":2,\"FirstName\":\"FN2\",\"LastName\":\"LN2\"}]";
IList<Person> persons = new JavaScriptSerializer()
.Deserialize<IList<Person>>(json);
Console.WriteLine(persons.Count);
}
}
}