десериализация серверной части json - PullRequest
0 голосов
/ 20 июля 2009

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

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

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

а я пользуюсь

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

как получить десериализацию кода json in process.aspx?

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

Ответы [ 3 ]

3 голосов
/ 20 июля 2009

Вы можете использовать DataContractJsonSerializer , встроенный в .Net 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);
  }
}
1 голос
/ 20 июля 2009

Вы можете использовать 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);
        }
    }
}
1 голос
/ 20 июля 2009

Библиотека NewtonSoft является хорошим вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...