Десериализация серверной части 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);
}
}
Вы можете использовать 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);
}
}
}