2009-07-20 80 views
0

如何反序列化从javascript(使用jquery.ajax)发送到.aspx页面(而不是Web服务)的json对象?反序列化json服务器端

例如如果我有以下json对象;

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

我用

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

我怎么弄反序列化背后process.aspx代码的JSON?

另外,如何在我的情况下使用$ .postJSON()?

回答

3

可以使用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

你可以使用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); 
     } 
    } 
}