Десериализация серверной части json

Как можно десериализовать объект json, отправленный из javascript (используя jquery.ajax) на страницу.aspx (не веб-сервис)?

например, если у меня есть следующий объект json;

var json = {"name" : "michael", "surname" : "brown", "age" : "35"}

и я использую

$.post('process.aspx', json)

Как я могу получить десериализовать JSON в коде process.aspx позади?

также, как я могу использовать $.postJSON() в моем случае?

3 ответа

Решение

Вы можете использовать DataContractJsonSerializer, встроенный в.Ne t 3.5, или мы используем отличную библиотеку Json с открытым исходным кодом: http://jayrock.berlios.de/

Чтобы использовать DataContractJsonSerializer, ваш код может выглядеть примерно так:

var serializer = new DataContractJsonSerializer(typeof(Person));
using (MemoryStream ms = new MemoryStream(new ASCIIEncoding().GetBytes(myString)))
{
  try
  {
    Person obj = serializer.ReadObject(ms) as Person;
  }
  catch (Exception e)
  {
    throw new InvalidOperationException("Could not deserialize Person.", e);
  }
}

Библиотека NewtonSoft - хороший вариант.

Вы можете использовать DataContractJsonSerializer:

class Program
{
    [DataContract]
    class Person
    {
        [DataMember(Name = "name")]
        public string Name { get; set; }
        [DataMember(Name = "surname")]
        public string Surname { get; set; }
        [DataMember(Name="age")]
        public int Age { get; set; }
    }

    static void Main(string[] args)
    {
        var json = @"{""name"" : ""michael"", ""surname"" : ""brown"", ""age"" : ""35""}";

        var serializer = new DataContractJsonSerializer(typeof(Person));
        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
        {
            var person = (Person)serializer.ReadObject(stream);
            Console.WriteLine("Name : {0}, Surname : {1}, Age : {2}", 
                person.Name, person.Surname, person.Age);
        }
    }
}
Другие вопросы по тегам